2012-11-10 58 views
4

我有一個自定義ListView設置與自定義ArrayAdapter。 一行由10個按鈕組成。點擊按鈕後,我無法更改按鈕標題。在getView方法中,我爲所有按鈕放置一個持有者。 的點擊監聽器是主要的活動,它工作正常(我這樣認爲),我能夠獲得按鈕的參考:在Android中更改ListView中的按鈕的文本

MyHolder h = (MyHolder) getListView().getAdapter().getView(position, null, null).getTag();

Button b = h.myButton;

現在,當我打電話b.getText() ,它給了我點擊按鈕的文本。 但是,當我嘗試:b.setText(「xxx」);該按鈕的文本不會更改。

有什麼想法?

回答

3

我不認爲調用:getListView().getAdapter().getView(position, null, null)手動實際返回現有的查看在position。這隻會創建一個新的使用相同的數據查看,這就是爲什麼您沒有看到任何更改並且沒有收到任何錯誤。

只需使用按鈕的OnClickListener中傳遞的View來更改自己的文本。

public void onClick(View v) { 
    Button b = (Button) v; 
    b.setText(...); 
} 
+1

這是工作,謝謝!但我的問題並沒有完全解決。當我按下第一個按鈕時,我需要更改我排的第一個和第二個按鈕的文本。我如何獲得對我行中其他按鈕的引用? – Dusan

+1

您可以使用每個Button的'setTag()'在適配器的'getView()'中保存對匹配Button的引用,或者使用'getParent()'和'getChildAt()'來查找匹配的Button。 – Sam

相關問題