简体   繁体   English

单个列表视图项颜色更改

[英]Single listview item color change

I have a listview with 3 columns(timeschedule). 我有一个3列(时间表)的listview First is time when bus leaves station, second is description of bus line and third is difference between the time when the bus leaves the station and the system time. 第一个是公共汽车离开车站的时间,第二个是公共汽车线路的描述,第三个是公共汽车离开车站的时间与系统时间之间的差。

So I want to change the color of items (bus lines) which are passed. 所以我想更改通过的项目(总线)的颜色。 I know that listview has a method setBackgroundColor , but it works only for all items. 我知道listview有一个方法setBackgroundColor ,但它仅适用于所有项目。

Is there some method which specifies items? 有一些指定项目的方法吗? Or i must change adapter settings? 还是我必须更改适配器设置?

Thank you, 谢谢,

Matija 马蒂亚

EDIT: Too complex for me :( I started with android just 3 weeks ago. Can anyone try implement Bhaskar answer in this code, so maybe i will get it. 编辑:对我来说太复杂了:(我三周前才开始使用android。任何人都可以尝试在此代码中实现Bhaskar答案,所以也许我会得到它。

             mylist = new ArrayList<HashMap<String, String>>();

             mylistglava = new ArrayList<HashMap<String, String>>();

    /********** Display the headings ************/
    map1 = new HashMap<String, String>();
    map1.put("Polazak", "Polazak:");
    map1.put("Opis", "Napomena:");
    map1.put("Kreceza", "Krece za:");
    mylistglava.add(map1);

    try {
        adapterglava = new SimpleAdapter(this, mylistglava,
                R.layout.vrijemebus, new String[] { "Polazak", "Opis",
                        "Kreceza" }, new int[] { R.id.Polazak, R.id.Opis,
                        R.id.Kreceza });
        list_glava.setAdapter(adapterglava);
    } catch (Exception e) {
        e.printStackTrace();

    }

    /********************************************************/

    /********** Display the contents ************/

    for (int i = 0; i < bus.vrijeme.length; i++) {
        map2 = new HashMap<String, String>();
        map2.put("Polazak", bus.vrijeme[i]);
        map2.put("Krece za", kreceza[i]);
        if (i < bus.opis.length)
            map2.put("Opis", bus.opis[i]);
        else
            map2.put("Opis", " ");
        mylist.add(map2);
    }

    try {
        adapter = new SimpleAdapter(this, mylist, R.layout.vrijemebus,
                new String[] { "Polazak", "Opis", "Krece za" }, new int[] {
                        R.id.Polazak, R.id.Opis, R.id.Kreceza });
      list.setAdapter(adapter);
    } catch (Exception e) {
        e.printStackTrace();

    }
   list.setSelection(pozicija);

    /********************************************************/
}

Thanks again, Matija 再次感谢,Matija

You Have to do it in Adapter getView() method ... 您必须在Adapter getView()方法中执行此操作...

MyAdapter extends SimpleAdapter {
private ArrayList<Integer> coloredItems = new ArrayList<Integer>();

public MyAdapter(...) {
    super(...);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = super.getView(position, convertView, parent);

   //Here you can add your method/code to change the color.
    return v;
}

} }

You can also change color in listview item xml, if you want to set color to the columns. 如果要为列设置颜色,还可以在listview项目xml中更改颜色。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM