listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
View v;
int count = parent.getChildCount();
v = parent.getChildAt(position);
parent.requestChildFocus(v, view);
v.setBackground(res.getDrawable(R.drawable.transparent_button));
for (int i = 0; i < count; i++) {
if (i != position) {
v = parent.getChildAt(i);
v.setBackground(res.getDrawable(R.drawable.not_clicked));
}
}
}
});
基本的に、2 つのDrawablesを作成します。1 つは透明で、もう 1 つは目的の色です。クリックされた位置 (int position
定義されている) にフォーカスをリクエストし、その行の色を変更します。次に、parentListView
をウォークスルーし、それに応じて他のすべての行を変更します。listview
これは、ユーザーが複数回クリックした場合を考慮したものです。これは、 の各行のカスタム レイアウトで行われますListView
。TextView
(非常に簡単です。フォーカス可能またはクリック可能に設定しないで、新しいレイアウト ファイルを作成するだけです)。
カスタム アダプタは不要 - 使用ArrayAdapter