Android列表视图根据内容更改颜色

时间:2012-07-31 16:33:01

标签: android listview

我目前有一个ListView Adaptor

如何根据ListView项目更改ListView背景的颜色?

i.e if(item.param1 == "some")
{
colour1
}
else
{
colour2
}

我的代码

   import java.util.HashMap;
   import java.util.List;

   import android.content.Context;
   import android.view.View;
   import android.view.ViewGroup;
   import android.widget.SimpleAdapter;
   import android.widget.TextView;

   public class SpecialAdapter extends SimpleAdapter {
    private int[] colors = new int[] { 0xFFFFFFFF, 0xFF000000 };
    TextView tv1, tv2;

    public SpecialAdapter(Context context, List<HashMap<String, String>> items, int resource, String[] from, int[] to) {
        super(context, items, resource, from, to);
    }



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

      view.setBackgroundColor(colors[colorPos]);
      return view;
    }
    }

希望这是有道理的

1 个答案:

答案 0 :(得分:0)

你应该覆盖

getViewTypeCount()

getItemViewType(int position)
在ListAdapter中

为每种颜色定义不同的类型。仅在BindView中更改颜色的解决方案不会产生良好的结果,因为Listview会回收ListItems,因此您最终会来回更改recyled项目的颜色。

提供ViewTypeCount&gt; 1 Listview知道您使用不同的布局并为您提供适当的recyled ListItem。 有关详细信息,请参阅此教程。

http://android.amberfog.com/?p=296