2013-02-25 98 views
0

請幫助,這個(可能很簡單)的問題讓我發瘋。如何在列表視圖中選擇適當的複選框

我有一個自定義的listview包含textview和複選框。 我想在複選框被選中時對listview元素進行一個操作。我試圖使用下面的代碼,但事情是我不知道如何檢測哪個特定的複選框被點擊。

checkBox = (CheckBox) findViewById(R.id.textCheckbox); 
checkBox.setOnCheckedChangeListener(this); 

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    if (isChecked) 
     make some action 
    else 
     make another action 
} 

我也試圖讓複選框上OnItemLongClickListener反應:

OnItemLongClickListener LongListener = new OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) { 
     CheckBox checkBox = (CheckBox) v.findViewById(R.id.textCheckbox); 
     listView = (ListView) a; 
     checkBox.setChecked(true); 
     return true; 
    } 
}; 

這樣我可以檢查一個適當的複選框,當我做一個列表視圖項longclick,但只要我向下滾動該列表中,複選框從它的位置移動。

請指教!

+0

http://lalit3686.blogspot.in/2012/06/today-i-am-going-to-show-how- to-deal.html – moDev 2013-02-25 20:15:42

+0

你在你的行中使用了什麼佈局,它是否實現可檢查? – Sam 2013-02-25 20:15:57

+0

我同意你@Sam – moDev 2013-02-25 20:20:34

回答

0

,最好的辦法是更新的基礎數據和呼叫notifyDatasetChanged()

OnItemLongClickListener LongListener = new OnItemLongClickListener() { 
@Override 
    public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) { 
     someListWithYourData.get(position).setSomething(true); // Now your data reflects the change 
     yourAdapter.notifyDataSetChanged(); 
     return true; 
    } 
}; 
+0

感謝您的及時回答!如果我寫 listView.get(position).setSomething(true); 我得到一個錯誤,「方法get(int)未定義類型ListView」。我能做什麼? 還有一個更愚蠢的問題:'setSomething'是什麼意思? setChecked?你在哪些數據上建立你的ListView的 – Juta 2013-02-25 20:52:03

+0

?你將哪些數據提供給適配器? – znat 2013-02-25 20:59:38

+0

我有一個數據列表列表 – Juta 2013-02-25 21:03:54

相關問題