如何在OnItemClickListener()中选中复选框?

时间:2011-11-30 21:40:16

标签: java android listview checkbox onitemclicklistener

我的ListView行中有一个复选框,如下所示。

===========================================
[CheckBox] [TextView] [TextView] [TextView]
===========================================

xml代码在这里

<CheckBox
    android:id="@+id/course_search_checkbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:clickable="false"
    android:focusable="false" />

我已经使复选框不可点击且可聚焦,以便将click事件传递给ListView。

我想在这里做的是当用户点击列表视图时,选中CheckBox并将listview的点击位置添加到arraylist。那么如何在ListView的OnItemClickListener中检查CheckBox?

请帮助,谢谢。

2 个答案:

答案 0 :(得分:5)

您可以在OnItemClickListener

中添加此代码
public void onItemClick(AdapterView parent, View view, int position, long id){
   CheckBox box = (CheckBox)view.findViewById(R.id.course_search_checkbox);
   box.setChecked(true);
}

答案 1 :(得分:0)

如果它是单个选择列表,那么您需要ListView中的这些api来获取位置/ ID:

getSelectedItemId()
getSelectedItemPosition()

现在,如果您已经为ListView实现了适配器。对于bindViewgetView等api(取决于您使用的适配器),您已根据上述apis设置了检查状态。像

这样的东西
public View getView(int position, View convertView, ViewGroup parent)
{
  ListView listView = (ListView)parent; // This is the parent view group passed as argument.
  CheckBox cb = (CheckBox)convertView.findViewById(R.id.check_box);
  if(getSelectedItemPosition() == position)
     cb.setChecked(true);
  else
     cb.setChecked(true);
 }

对于Multiselection,您需要从ListView下面的apis:

getCheckedItemPositions

检查复选框的代码类似于单选(但不完全相同)。

注意:提及的代码仅供参考。它不是优化的代码。绝对需要修改。 注意: