我在适配器中有以下代码来处理CheckBox上的点击。 gview
引用适配器的getView()
适配器代码:
selected.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked)
if (selection.size() == 0)
gview.performLongClick();
else
gview.performClick();
else
if (selection.size() == 1)
gview.performLongClick();
else
gview.performClick();
}
});
逻辑位于包含ListView
的活动中,其中performLongClick()
触发OnItemLongClick
而performClick()
应触发onItemClick()
但我的问题是它没有:
活动代码:
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long itemId) {
if (listMode == MODE_NAVIGATION){
home.browserFragment.loadUrl(bookmarks.findById((int)itemId).getUrl());
home.browserFragment.closeBookmarks();
} else{
updateMultipleItemsSelection((int)itemId);
}
}
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long itemId) {
if (listMode == MODE_SELECTION){
deactivateSelectionMode();
}else{
activateSelectionMode();
updateMultipleItemsSelection((int)itemId);
}
return true;
}
有没有人看到这个问题的可能解决方案?
谢谢
答案 0 :(得分:1)
因为复选框是可聚焦的,所以周围的列表视图项不是。尝试将listview项设置为XML中的焦点。如果这不起作用,您可以尝试将复选框设置为不可聚焦(它仍然可以检查)。
答案 1 :(得分:0)
enter code here
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) {
// TODO Auto-generated method stub
CheckBox cb = (CheckBox) v.findViewById(R.id.checkBox1);
TextView tv = (TextView) v.findViewById(R.id.textView1);
pi = (PackageInfo) arg0.getItemAtPosition(position);
cb.performClick();
if (cb.isChecked()) {
checkedValue.add(tv.getText().toString());
} else if (!cb.isChecked()) {
checkedValue.remove(tv.getText().toString());
}
}