【问题标题】:Problem with adding checkbox inside a listview在列表视图中添加复选框的问题
【发布时间】:2011-11-15 07:46:02
【问题描述】:

我在列表视图中添加了一个复选框,但我只能选择和取消选择复选框,但我无法选择列表项。如何克服这个问题?任何帮助表示赞赏并提前感谢...

我的代码放在这里

List<String> lst = dh.selectAll();
    lv = (ListView)findViewById(R.id.listView1);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.list,R.id.textViewx,lst);
    lv.setAdapter(adapter);


    lv.setOnItemClickListener(this);

dh.selectall() -> 包含数据库中项目的列表数组; lv -> 列表视图标识 我使用了数组适配器并确定了一个文本视图来在列表视图中输入项目 最后,我通过实现 OnItemClickListener 为 listview 提供了一个 clicklistener。

【问题讨论】:

标签: java android listview


【解决方案1】:

您应该使用多选列表视图。完美满足您的需求。这是一个很好的教程的链接:http://mubasheralam.com/tutorials/android/how-create-multiple-choice-list

更新 1

listViewObj.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

当您的列表视图中有一个可检查的项目时,对项目的触摸将不会传递到项目。只是为了测试,将您的复选框设置为不可点击。 chkox.setClickable(false); 和测试。点击将传递到您的项目。

更新 2

您应该使用android.R.layout.simple_list_item_multiple_choice 作为列表项。

List<String> lst = dh.selectAll();
lv = (ListView)findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                         android.R.layout.simple_list_item_multiple_choice, lst);

lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv.setListAdapter(adapter);

【讨论】:

  • 没关系。直接使用 listview 对象而不是调用getListView
  • 将您当前的代码添加到问题中。您将哪个布局 ID 传递给您的适配器?
  • 您应该在 XML 布局中为列表项中的复选框设置 android:focusable="false"。否则复选框将窃取所有点击事件,而您的列表视图将无法获取它们。
【解决方案2】:

没有这两行,列表将显示 复选框,但无法选中/取消选中

ListView listView = getListView();
mainListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

【讨论】:

  • 我只能选中和取消选中复选框。但我无法选择列表项......
猜你喜欢
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
相关资源
最近更新 更多