android点击动画块onItemClick

时间:2014-12-18 20:05:25

标签: android gridview android-listview background onitemclicklistener

我在我的Android应用程序中实现了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不会注册它。

如何同时拥有点击事件和背景动画?

1 个答案:

答案 0 :(得分:0)

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

所以你想做这样的事情:

... 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);
        }
    });
    ...
}