2011-06-25 31 views
0

我在同一活動中有兩個列表視圖。他們都觸發此:onItemClick兩個Listviews問題

public void onItemClick(AdapterView adapter, View v, int position, long arg3) 

如何檢查從此事件處理程序中選擇哪個列表? 此外,如果adapter == listA那麼我需要該列表中的複選框和位置被選中/取消選擇。我在這裏的活動中如何做到這一點?

也許是這樣的:v.myCheckBox.setChecked(false) < - 顯然這是行不通的。

注意:我正在使用兩個自定義適配器,它們繼承自基礎適配器。

+1

我想你*可以*根據適配器計算出來,但這似乎是你過於複雜的事情。爲什麼不只是聲明兩個'OnItemClickListeners'? – dmon

+0

你已經在這裏發佈了兩個不同的問題。如果你有一個帶有選中項的列表,你應該看看ListView的'setChoiceMode'方法和'CHOICE_MODE_MULTIPLE'。 – adamp

回答

1

爲了得到複選框 - 這是最好使用類似的東西:

checkbox = (Checkbox) view.findViewById(R.id.yourcheckboxid); 
checkbox.setChecked(false); 

知道是誰創建的視圖的最簡單方法是存儲某種標識符由適配器創建的視圖的標籤字段(View.setTag()方法)。這應該在適配器的getView方法中創建新視圖時設置。然後從view.getTag(),你將能夠看到哪個適配器創建它並做出適當的反應。

雖然從你寫的東西你應該做不同的事情(如果你繼承了適配器)。如果您的適配器層次是:

A -> B1 
    \ 
    B2 

而且你只有在B1創建的視圖複選框,那麼你應該得到類似的東西在B1:

@Override 
public void onItemClick(AdapterView adapter, View v, int position, long arg3) { 
    super.onItemClick(adapter,v,position,arg3); 
    checkbox = (Checkbox) view.findViewById(R.id.yourcheckboxid); 
    checkbox.setChecked(false); 
    ... any other custom handling for list handled by B1 
} 
+0

非常感謝!我沒有意識到我可以從onItemClick的視圖中抓取複選框,而且我也不知道setTag()。非常感謝!這完全解決了我的問題。 – spentak

+0

好....很高興幫助! –

0

檢查哪些查看通用戶view.getId ()