ListView OnClickItems 在 Android 中更改项目颜色

Posted

技术标签:

【中文标题】ListView OnClickItems 在 Android 中更改项目颜色【英文标题】:ListView OnClickItems change item color in Android 【发布时间】:2020-08-29 14:41:44 【问题描述】:

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

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

  

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

您好,感谢您的回复,我很感激,但它仍然没有改变我使用它的颜色。 i.stack.imgur.com/dEUgC.png【参考方案2】:

有几种方法可以实现这一点,最简单的一种是您可以在应用红色之前检查 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);
         

    
);

【讨论】:

您好,感谢您的回复,但您从哪里获得价值 R.id.blue?如果我没记错的话,我知道它来自 activity_main 但我很困惑在哪里指定 id.blue 谢谢@treadkhuram 通过getResources().getColor(R.color.color_id)获得的资源中的颜色; 是的,我已经尝试过了,但问题是我找不到如何将这一行 ((ColorDrawable) v.getBackground()).getColor()) 转换为 int I 的解决方案猜测 。我已经试过了,请检查图片并再次感谢i.stack.imgur.com/WJZVm.png

以上是关于ListView OnClickItems 在 Android 中更改项目颜色的主要内容,如果未能解决你的问题,请参考以下文章

ListView列表项

初探ListView

ScrollView中嵌套ListView时,listview高度显示的问题

Android中一个关于ListView的奇怪问题

浅谈android中的ListView合集系列之解决ScrollView和ListView嵌套冲突

Listview 常用设置