我在ListView的行项目中使用CheckBox。将CheckBox设置为android:focusable="false"
。因此ListView的OnItemClickListener正常工作,但checkBox似乎无法点击。我该如何解决这个问题?
在我的自定义arrayAdapter中:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
FileHolder holder;
if(v == null){
LayoutInflater inflater = ((Activity)getContext()).getLayoutInflater();
v = inflater.inflate(layoutResourceId, parent, false);
holder = new FileHolder();
holder.isChecked = (CheckBox)v.findViewById(R.id.checkBox1);
v.setTag(holder);
holder.isChecked.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Log.d("common", "checked");
}
});
}
}
在row_item.xml中:
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:button="@drawable/checkbox"
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="true"/>
编辑:我尝试注册OnTouchListener,但也没有调用onTouch()。
答案 0 :(得分:1)
我不认为你应该将focusable和focusableInTouchMode设置为false。 在夸大布局
时尝试将父级设置为nullv = inflater.inflate(layoutResourceId, null, false);
希望它会有所帮助。
此外,我认为如果您的列表很长,您将遇到性能问题。如果列表中有很多行,则不鼓励在new OnClickListener(){}
上创建getView(int position, View convertView, ViewGroup parent) {}
。在侦听器实例上创建为所有行设置它。您可以使用标记来确定单击哪个视图。