1

我在适配器中有以下代码来处理 CheckBox 上的点击。gview引用适配器中的 View 参数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();
        }

    });

逻辑在包含ListViewwhereperformLongClick()触发器OnItemLongClickperformClick() 应该触发的活动中,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;
}

有没有人看到这个问题的可能解决方案?

谢谢

4

2 回答 2

1

因为复选框是可聚焦的,所以周围的列表视图项不是。尝试在 XML 中将列表视图项设置为可聚焦。如果这不起作用,您可以尝试将复选框设置为不可聚焦(它仍然可以选中)。

于 2012-05-14T22:46:40.863 回答
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());
        }
    }
于 2016-08-30T05:25:27.663 回答