【问题标题】:Using a CustomAdapter in a ListView, I need to manually check/uncheck the CheckBox. How do I do this?在 ListView 中使用 CustomAdapter,我需要手动选中/取消选中 CheckBox。我该怎么做呢?
【发布时间】:2013-07-15 20:37:20
【问题描述】:

我觉得这个问题被发布了一千次。在某些情况下,我真的很接近答案,但它总是从我的指缝中溜走。

我想要做的是,当我单击列表的一行时,我手动取消/选中该行的 CheckBox

换句话说:当我在 listView 行中单击时,我必须获取与其关联的 CheckBox 对象,以便更改它的值。

我觉得答案类似于在 listview.setOnItemClickListener 方法中调用或复制 holder.CheckBox.setOnClickListener 方法(处理 CustomAdapter 中的 CheckBox 状态)方法,但我不知道该怎么做:(

要明确一点 - 我可以获取点击了哪一行、点击了哪个复选框、它们的位置以及有关它的所有数据。如果我单击复选框,则检查没有问题。我唯一不能做的就是在单击框旁边的文本时选中该框。

如果需要,我可以发布代码,但由于我不确定是否有必要,我会避免将这个问题变成文字墙。

【问题讨论】:

标签: android listview checkbox onclicklistener


【解决方案1】:
ListView myListView  = (your listView);
myListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            ViewGroup currentItem = (ViewGroup)myListView.getChidAt(arg2);
                    (CheckBox) currentCheckBox = currentItem.findViewById(---id of the checkBox );
currentCheckBox.setChecked(true);
        }
    });

【讨论】:

  • 感谢您的回答。这完成了我需要它做的事情,但是如果我向下滚动,应用程序会删除选中的信号,如果我尝试检查向下滚动时加载的项目,应用程序会崩溃。我认为这是使用我在其他答案中看到的某种标签来解决的,我会调查一下。再次感谢!
  • 那是因为您可能在适配器中使用了viewHolder..您可以根据需要设置标签。
  • 是的,就是这样。我缺乏的是对 ViewGroup 和 ViewHolder 如何工作的理解。现在工作正常,谢谢。
【解决方案2】:

我有一个你需要的例子,但我有一个图像,当你点击它时它会变成另一个:

final ImageView ui_fav = (ImageView) item.findViewById(R.id.fav_channelrow);
if (canales.get(position).getIsFav() == true) {
    ui_fav.setImageResource(R.drawable.star);
} else {
    ui_fav.setImageResource(R.drawable.silver_star);
}
ui_fav.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (canales.get(position).getIsFav()) {
            ui_fav.setImageResource(R.drawable.silver_star);
            canales.get(position).setIsFav(false);
        } else {
            ui_fav.setImageResource(R.drawable.star);
            canales.get(position).setIsFav(true);
        }
    }
});

【讨论】:

    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多