listview每个项目动态更改背景颜色

时间:2014-11-02 17:39:39

标签: android listview

我有更具体的案例而不仅仅是改变背景颜色。

我有1个listview,在每个listview项目中我有2个textviews。 我在这些listview项目textviews中显示的所有信息都来自服务器。

我得到的一个参数是颜色代码(例如#138F6A)。 现在,我需要使用此颜色代码(我在textview中作为值插入)并根据我从服务器的颜色代码值更改此listview项目特定的textview背景颜色。

我该怎么做?如何将colorView textview背景设置为我从服务器获取的此列表视图项的颜色?

    public void OnCreateActivity() {    
    ...
    ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
    XMLParser objektinimi_parser = new XMLParser(); 
    ...
     // looping through all item nodes <item>
            for (int i = 0; i < ndlist.getLength(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                Element myelem = (Element) ndlist.item(i);                      
    String bronID = objektinimi_parser.getValue(myelem, "BRON_ID");
    String color= objektinimi_parser.getValue(myelem, "COLOR");

    map.put(BRON_ID, bronID);
    map.put(COLOR, color);
    menuItems.add(map);
    }

    ListAdapter adapter = new SimpleAdapter (this, menuItems,
                    R.layout.kirjed,
                    new String[] { BRON_ID, COLOR }, 
                    new int[] { R.id.bronid, R.id.colorView });
    setListAdapter(adapter);
            ListView lv = getListView();

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用getView方法扩展适配器并设置背景颜色:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);
    view.setBackgroundColor(theColour);
    return view;
}

如果您不需要按状态等,这将正常工作。

如果您这样做,则需要使用ColorStateListsetBackgroundResource,请参阅:http://developer.android.com/reference/android/content/res/ColorStateList.html