ListView OnClickItems更改Android中的项目颜色

问题描述 投票:-1回答:2

我是android studio的初学者。我想知道如果我再次单击列表视图上的选定项目时如何更改颜色,假设我单击第一个项目,它将背景变成红色,并且与其他项目保持不变,但是我的问题是当我单击时再次将红色项目更改为蓝色。下面是我的示例代码,当我单击不知道将其更改为蓝色的项目时,它仅保留颜色。预先感谢。

enter image description here

public class MainActivity extends AppCompatActivity {
ListView list_view;
ArrayList<String> list = new ArrayList<String>();
ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    list_view = (ListView) findViewById(R.id.list_views);
    list.add("Data 1");
    list.add("Data 2");
    list.add("Data 3");
    list.add("Data 4");
    list.add("Data 5");

    adapter =new ArrayAdapter<String>(this, R.layout.list_item,list);
    list_view.setAdapter(adapter);

    list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View v, int i, long l) {
            v.setBackgroundColor(Color.RED);
        }
    });

  }
}
java android android-listview
2个回答
0
投票

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

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

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


0
投票

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

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);
         }

    }
});
© www.soinside.com 2019 - 2024. All rights reserved.