我在我的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
不会注册它。
如何同时拥有点击事件和背景动画?
答案 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);
}
});
...
}