4

我有一个使用自定义 ArrayAdapter 设置的自定义 ListView。一排由 10 个按钮组成。单击按钮后,我无法更改按钮标题。在 getView 方法中,我正在为我的所有按钮设置一个支架。点击监听器在主要活动中,它工作正常(我认为是这样),我能够获得按钮的参考:

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

Button b = h.myButton;

现在当我调用 b.getText() 时,它会给我点击按钮的文本。但是当我尝试时: b.setText("xxx"); 按钮的文字不会改变。

有任何想法吗?

4

1 回答 1

3

我不认为调用:getListView().getAdapter().getView(position, null, null)手动实际上会返回现有的 View at position。这只会创建一个具有相同数据的视图,这就是为什么您看不到任何更改并且不会收到任何错误的原因。

只需使用 Button 的 OnClickListener 中传递的 View 来更改其自己的文本。

public void onClick(View v) {
    Button b = (Button) v;
    b.setText(...);
}
于 2012-11-10T19:55:29.447 回答