[英]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.