簡體   English   中英

如何在OnItemClickListener()中選中復選框?

[英]How to make checkbox checked in the 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?

請幫助,謝謝。

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

好吧,如果它是一個單一的選擇列表,那么你需要從ListView獲取這些api來獲得位置/ id:

getSelectedItemId()
getSelectedItemPosition()

現在,如果您已經為ListView實現了適配器。 在那里為apis,如bindViewgetView等(取決於你使用的適配器),你已經根據上面的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

用於選中復選框的代碼將類似於單個選擇(盡管不是很精確)。

注意:提到的代碼僅供參考。 它不是優化的代碼。 絕對需要修改。 注意:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM