我使用自定义ArrayAdapter设置了自定义ListView。 一排由10个按钮组成。单击按钮后,我无法更改按钮标题。在getView方法中,我正在为我的所有按钮设置一个持有者。 点击监听器在主要活动中,它正常工作(我想是这样),我能够得到按钮的参考:
MyHolder h = (MyHolder) getListView().getAdapter().getView(position, null, null).getTag();
Button b = h.myButton;
现在当我调用b.getText()时,它会给我单击按钮的文本。 但是当我尝试:b.setText(“xxx”);按钮的文字没有改变。
任何想法?
答案 0 :(得分:3)
我不认为调用:getListView().getAdapter().getView(position, null, null)
手动实际返回position
处的现有视图。这只会创建一个具有相同数据的 new 视图,这就是您没有看到任何更改并且不会收到任何错误的原因。
只需使用Button的OnClickListener中传递的View来更改自己的文本。
public void onClick(View v) {
Button b = (Button) v;
b.setText(...);
}