listView で選択したアイテムの背景色を変更する方法を知りたいです。ユーザーがクリックした特定のアイテムのみを変更したい、つまり、ユーザーが別のアイテムをクリックすると、それが強調表示されます。できるだけシンプルに保ち、デフォルトの Android リストビューを使用したいので、代わりに次のコードを使用しました。
record_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
try{
for (int ctr=0;ctr<=record_items.length;ctr++){
if(i==ctr){
record_list.getChildAt(ctr).setBackgroundColor(Color.CYAN);
}else{
record_list.getChildAt(ctr).setBackgroundColor(Color.WHITE);
}
}
}
catch (Exception e){
e.printStackTrace();
}
Log.v("Selected item",record_list.getItemAtPosition(i));
}
});
これは機能していますが、問題は遅いことです。今、私が行ったのと同じ出力を与えることができる他の方法があるかどうかを知りたいです。
使用してみrecord_list.getSelectedView().setBackgroundColor(Color.CYAN);
ましたが、ヌルポインタ例外が発生します。
私もselector.xmlを試しましたが、うまくいきませんでした。さらに、ListView には、listSelector と呼ばれるプロパティが 1 つあります。「リストで現在選択されている項目を示すために使用されるドローアブル」というドキュメントで述べられているように、これはドローアブルです。また、これでうまくいくはずだと思います。はい、エミュレータではうまくいきますが、Galaxyタブではうまくいきません。他の方法も試しましたが、思い通りに機能しません。