[英]How to change background color of only the clicked item in ListView in Android Studio?
每當用戶按下列表視圖時,它會將其背景顏色更改為紅色。 但是,當我按下另一個項目時,舊項目仍然保留紅色的背景顏色。 如何編輯它以便只有點擊的項目改變背景顏色。
lvContact.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
view.setSelected(true);
view.setBackgroundColor(Color.RED);
nameSelected = contactHolderArrayList.get(position).name;
phoneSelected = contactHolderArrayList.get(position).phone;
//Anything
}
});
我剛剛實現了一個簡單的計數器來跟蹤上一個和當前位置並且它起作用了! 如果有什么不對的地方請評論。 我在 oncreate 中將計數器初始化為 0 並在每次按下列表項時遞增,然后將其包含在 onitemclicklistener 中的代碼下方
lvContact.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
//view.setSelected(true);
if(counter==0) {
prevPosition = position;
}
else if (counter ==1) {
currentPosition = position;
}
else {
prevPosition = currentPosition;
currentPosition = position;
}
lvContact.getChildAt(prevPosition).setBackgroundColor(Color.TRANSPARENT);
view.setBackgroundColor(Color.RED);
counter++;
您需要在 ListView 適配器內的視圖上應用 onTouchListener 然后需要在向下操作上設置新顏色和在向上操作上設置舊顏色
public View getView(int position, View convertView, ViewGroup parent)
{
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
// apply new color
}
if(event.getAction() == MotionEvent.ACTION_UP){
// apply old color
}
return false;
}
});
return view;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.