【问题标题】:How to select appropriate checkbox in listview如何在列表视图中选择适当的复选框
【发布时间】:2013-02-26 21:44:12
【问题描述】:

请帮忙,这个(可能很简单)问题让我发疯了。

我有一个包含文本视图和复选框的自定义列表视图。 当复选框被选中时,我想对 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;
    }
};

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

请指教!

【问题讨论】:

  • 您在行中使用什么布局,是否实现了 Checkable?
  • 我同意你@Sam
  • @Sam 我使用包含复选框和文本视图的自定义布局。

标签: android listview checkbox


【解决方案1】:

最好的方法是更新底层数据并调用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;
    }
};

【讨论】:

  • 感谢您的及时答复!如果我写 listView.get(position).setSomething(true);我收到一条错误消息,提示“ListView 类型的方法 get(int) 未定义”。我能做些什么?还有一个愚蠢的问题:“setSomething”是什么意思?已设置检查?
  • 您在哪些数据上构建您的 ListView?您向适配器提供哪些数据?
  • 我有一个带有数据的数组列表
猜你喜欢
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
  • 2016-02-13
  • 1970-01-01
  • 2014-09-01
  • 1970-01-01
相关资源
最近更新 更多