【问题标题】:android click animation blocks onItemClickandroid点击动画块onItemClick
【发布时间】:2014-12-18 20:05:25
【问题描述】:

我已经在我的安卓应用中实现了 etsy 的交错网格。

我有一个布局:

<RelativeLayout 
...
android:background="?attr/selectableItemBackground"
android:clickable="true">

    ...

</RelativeLayout>

和代码:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id){
        Log.i(TAG, "onItemClick");
    }
});

事实证明,当我在 XML 中删除两行时,onItemClick 会被触发而没有背景动画,当我将这两行保持原样时,动画会显示但 onItemClick 不会被触发。

我认为点击 RelativeLayout 会阻止点击它的父容器 AdapterView ,然后 StaggeredGrid 不会注册它。

我怎样才能同时拥有点击事件和背景动画?

【问题讨论】:

    标签: android gridview android-listview background onitemclicklistener


    【解决方案1】:

    只需将点击侦听器添加到您的RelativeLayout。因此,在适配器的 getView() 函数中,将点击侦听器设置为您的项目。

    所以你想做这样的事情:

    ... class ViewHolder {
        ...
        ViewGroup viewRoot;
        ...
    }
    ...
    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
    
        ViewHolder vh;
        ...
        vh.viewRoot = convertView.findViewById(R.id.id_of_relative_layout);
        ...
        vh.viewRoot.setOnClickListener( new OnClickListener(){
            @Override
            public void onClick() {
                // Do stuff
                Log.i(TAG, "Item clicked on item with position: " + position);
            }
        });
        ...
    }
    

    【讨论】:

    • 但是我需要对GridViewArrayList 中的信息做一些事情,所以我需要position 输入
    • 可以从传入getview的参数中获取位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2011-03-24
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多