2014-05-23 53 views
0

(在Android中)我有一個包含AdapterView的列表,當然,該視圖有兩個項目 - 一個字符串項目和一個圖像。用戶點擊字符串項目(圖像不可見),我的ItemClickListener被調用。我可以找出被點擊的位置。假設它是第三項(位置2,基數爲0)。我想要的是在適配器視圖中指向圖像的指針,以便我可以切換其可見性(圖像是複選標記)。我似乎無法通過AdapterView中的特定項目工作。任何幫助讚賞。在AdapterView中查找子條目

回答

0

我的解決方案可能是一個黑客,我不知道,但無論如何...

所以,你有一個TextView和列表中的每一個項目的ImageView。假設他們在LinearLayout上。此外,你說「當用戶點擊TextView」,所以我想你有一個onClickListener鏈接到TextView。 onClickListener爲您提供了TextView的參考。您可以在該視圖上調用getParent(),將其轉換爲ViewGroup,然後使用findViewById()來檢索圖像。例如:

@Override 
public void onClick(View view) // view = TextView 
{ 
    ViewGroup vg = (ViewGroup) view.getParent(); // vg = LinearLayout 
    ImageView iv = (ImageView) vg.findViewById(R.id.yourImageView); 
    iv.setVisibility(View.INVISIBLE); 

} 

我認爲演員(ViewGroup)不是很安全,但我可能是錯的。我不知道。試試看

如果Listener實際上是一個鏈接到List的OnItemClickListener()(因爲我不確定我是否正確理解了你所說的),那麼這意味着當用戶單擊時,整個項目視圖被髮送到聽衆,所以你只需要這樣做:

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
{ 
    //view = LinearLayout 
    ImageView iv = (ImageView) view.findViewById(R.id.yourImageView); 
    iv.setVisibility(View.INVISIBLE); 
} 
+0

聽起來很接近,讓我試試看 - 謝謝! – Tab

+0

就是這樣。謝謝! – Tab

+0

看看handrenliang的答案。如果我的答案確實是黑客,那麼這很糟糕,你不應該這樣做。你應該嘗試使用標籤(這聽起來是一個更好的主意)。另外,選擇他的答案,而不是我的,以避免在人們頭腦中傳播黑客:) – Steel

0

是的,選定的解決方案是有點破解。 AdapterView也是一個View,因此您可以簡單地在適配器中爲ImageView設置一個唯一標記,然後使用AdapterView.findViewWithTag()來獲取視圖。

+0

觀點上的標籤對我來說是新的,讓我試驗。 – Tab

+0

仍在工作(假期週末和所有)。仍然需要我迭代對象。無論如何,如果未來在這裏計劃使用它們。 – Tab