如何在列表视图中选择适当的复选框

时间:2013-02-25 20:12:50

标签: android listview checkbox

请帮助,这个(可能是简单的)问题会让我发疯。

我有一个包含textview和复选框的自定义列表视图。 我想在选中复选框时对listview元素进行操作。我正在尝试使用下面的代码,但问题是我不知道如何检测单击哪个特定复选框。

checkBox = (CheckBox) findViewById(R.id.textCheckbox);
checkBox.setOnCheckedChangeListener(this);

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (isChecked)
        make some action
    else
        make another action
}

我还尝试在OnItemLongClickListener上对复选框做出反应:

OnItemLongClickListener LongListener = new OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) {
        CheckBox checkBox = (CheckBox) v.findViewById(R.id.textCheckbox);
        listView = (ListView) a;
        checkBox.setChecked(true);
        return true;
    }
};

这样,当我在列表视图项目上进行长按时,我可以检查一个正确的复选框,但只要我向下滚动列表,复选框就会从它的位置移动。

请指教!

1 个答案:

答案 0 :(得分:0)

最好的方法是更新基础数据并致电notifyDatasetChanged()

OnItemLongClickListener LongListener = new OnItemLongClickListener() {
@Override
    public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) {
        someListWithYourData.get(position).setSomething(true); // Now your data reflects the change
        yourAdapter.notifyDataSetChanged();
        return true;
    }
};