我的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" />

而且我已经使复选框不可点击且可集中,以便将点击事件传递到listView。

我想在这里做的是,当用户单击listView时,请检查复选框,然后将ListView的单击位置添加到ArrayList。那么,如何在ListView的OnItemClickListener中检查复选框?

请帮忙,谢谢。

有帮助吗?

解决方案

您可以在您的 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);
}

其他提示

好吧,如果它是一个选择列表,那么您需要这些API ListView 获得位置/ID:

getSelectedItemId()
getSelectedItemPosition()

现在,如果您已为ListView实施了适配器。在那里为apis bindView, getView etc(根据您使用的适配器的不同),根据上述API设置了检查状态。就像是

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的API下面:

getCheckedItemPositions

检查复选框的代码将类似于单个选择(虽然不是确切的)。

注意:提到的代码仅供参考。这不是优化的代码。绝对需要修改。笔记:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top