アクティビティに ListView があり、行ごとに、TextView と 2 つのボタンを使用してカスタム レイアウトを使用しています。これら 2 つのボタンのいずれかをクリックすると、特定のアクションが実行されます。ArrayAdapter の getView メソッドで、onClickListeners をこれら 2 つのボタンに設定しました。
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
v = li.inflate(R.layout.process_row, null);
}
final Button processCheck = (Button) v.findViewById(R.id.processCheck);
processCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (process.isChecked() == false) {
process.setChecked(true);
processCheck.setBackgroundColor(Color.BLUE);
}
else {
process.setChecked(false);
processCheck.setBackgroundColor(Color.RED);
}
}
});
return v;
}
ArrayList は mz カスタム クラス Process のオブジェクトを保持し、コード内のプロセスはこのクラスのインスタンスです。したがって、ListView 行のいずれかでこのボタンをクリックすると、指定された Process インスタンスのブール変数が変更され、ボタンの色が変更されることが期待されます。それは起こりますが、この1行だけでなく、さらに3〜4行です。クリックすると、1 つではなく 5 つの変更されたボタンが表示されます。ここで何が間違っているか知っていますか?私は ListActivity のコーディングをよく知らないことに注意してください。ほとんどのコードは、実際にはサンプル ファイルから少しコピーして編集したものです。ありがとう!
編集:
問題はおそらくどこかのレイアウトだけです。ボタンをクリックすると、より多くの色が変わりますが、クリックしたプロセスだけがブール値が変更されます。