これを試してください:
private int prevPosition=-1;
とあなたのonItemClick
使用:
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view,
int position, long arg3) {
for (int i = 0; i < adapter.getChildCount(); i++) {
if (i == position) {
if(position!=prevPosition){
//set your selected color
adapter.getChildAt(i).setBackgroundColor(Color.BLUE);
prevPosition=position;
}else{
adapter.getChildAt(i).setBackgroundColor(Color.BLACK);
prevPosition=-1;
}
}else{
//set your normal color
adapter.getChildAt(i).setBackgroundColor(Color.BLACK);
}
}
}
});
オプション2
あなたlistview
res/drawable
でフォルダの描画可能なセレクタを使用することができます
background.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/pressed" />
<item android:state_focused="false"
android:drawable="@drawable/normal" />
</selector>
pressed.xml:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#000000"/> // set your selected color
<padding android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp"/>
</shape>
normal.xml:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<padding android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp"/>
</shape>
今、XMLであなたのlistview
でそれを使用します。
android:listSelector="@drawable/background"
あなたが全体のコードを提供することにより、質問を手の込んだリストビューに? – OBX
ほとんどの場合、ビューは再描画されません。完全なソースコードを持っていると、なぜこのようなことが起こるのか理解するのに役立ちます。 – jackgu1988
上記の質問にいくつかのコードを追加しましたが、正確にはどの部分が必要ですか?ありがとう:) – xRobot