4

カスタムArrayAdapterを使用してカスタムListViewを設定しています。1列は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)手動で呼び出すと、実際にはで既存のビューが返されるとは思いませんposition。これにより、同じデータで新しいビューが作成されるだけです。そのため、変更は表示されず、エラーも発生しません。

ボタンのOnClickListenerで渡されたビューを使用して、独自のテキストを変更するだけです。

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