当ListView的Item中包含Button、ImageButto等控件时,会导致item无法获取焦点,从而无法响应点击事件。这时候需要设置所有子控件无法焦点:可以使用
android:focusable="false"
android:descendantFocusability="blocksDescendants"
这样item就可以获取Item的点击事件,但子控件中的Button仍然无法响应。
需要自定义一个Adapter,重写getView()方法。
这里就以SimpleAdapter作为示例:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
final int num = position;
ImageButton b = (ImageButton) v.findViewById(R.id.myButton);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("item:"+num+"中的按钮响应");
}
});
return v;
}
本文介绍了解决Android ListView中Item包含Button等控件时导致点击事件冲突的方法。通过设置子控件不可聚焦,并自定义Adapter重写getView()方法,使得Item能够正常响应点击事件。
703

被折叠的 条评论
为什么被折叠?



