Java ListView OnClickItems在Android中更改项目颜色 我是android studio的初学者。我想知道如果我再次单击listview上的选定项目,如何更改颜色,比如我单击第一个项目,它会将背景颜色变为红色,其他项目将保持不变,但我的问题是,当我再次单击红色项目时,我想将其更改为蓝色。下面是我的示例代码,它只在我单击该项目时保留颜色,我不知道如何将其更改为蓝色。提前谢谢。

Java ListView OnClickItems在Android中更改项目颜色 我是android studio的初学者。我想知道如果我再次单击listview上的选定项目,如何更改颜色,比如我单击第一个项目,它会将背景颜色变为红色,其他项目将保持不变,但我的问题是,当我再次单击红色项目时,我想将其更改为蓝色。下面是我的示例代码,它只在我单击该项目时保留颜色,我不知道如何将其更改为蓝色。提前谢谢。,java,android,android-listview,Java,Android,Android Listview,public类MainActivity扩展了AppCompatActivity{ 列表视图列表视图; ArrayList=新建ArrayList(); 阵列适配器; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 列表视图=(列表视图)findViewById(R.id.list\u视图); 列表。添加(“

public类MainActivity扩展了AppCompatActivity{
列表视图列表视图;
ArrayList=新建ArrayList();
阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
列表视图=(列表视图)findViewById(R.id.list\u视图);
列表。添加(“数据1”);
列表。添加(“数据2”);
列表。添加(“数据3”);
列表。添加(“数据4”);
列表。添加(“数据5”);
适配器=新阵列适配器(此,R.layout.list\u项,list);
列表\视图.设置适配器(适配器);
list_view.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(适配器视图适配器视图,视图v,内部i,长l){
v、 setBackgroundColor(颜色:红色);
}
});
}
}

将当前应用的颜色保存在变量中

int currentColor = Color.white; // make this a class variable
int color = currentColor == white ? Color.RED : Color.Blue;
v.setBackgroundColor(color);

PS这是一个伪代码,只是为了解释这个想法

有两种方法可以实现这一点,最简单的方法是,在应用红色之前,您可以在if条件下检查背景色

list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View v, int i, long l) {
        if (R.color.blue === ((ColorDrawable) v.getBackground()).getColor()) {
            v.setBackgroundColor(Color.RED);
        }else{
           v.setBackgroundColor(Color.BLUE);
         }

    }
});
list_view.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(适配器视图适配器视图,视图v,内部i,长l){
如果(R.color.blue==((可着色)v.getBackground()).getColor()){
v、 setBackgroundColor(颜色:红色);
}否则{
v、 setBackgroundColor(颜色:蓝色);
}
}
});

您好,谢谢您的回复,但您从哪里获得R.id.blue的价值?如果我没有弄错的话,我知道它来自于activity_main,但是我不知道在哪里指定id.blue thanking@treadkhuramColor来自您通过getResources()获得的资源getColor(R.color.color_id);是的,我已经试过了,但问题是我找不到一个解决方案来将这行((ColorDrawable)v.getBackground()).getColor()转换成int。我已经试过了,请检查图片,再次感谢你好,谢谢你的回复,我很感激,但它仍然没有改变颜色,我使用这个。
list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View v, int i, long l) {
        if (R.color.blue === ((ColorDrawable) v.getBackground()).getColor()) {
            v.setBackgroundColor(Color.RED);
        }else{
           v.setBackgroundColor(Color.BLUE);
         }

    }
});