0

我目前有一个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;
    }
    }

希望这是有道理的

4

1 回答 1

0

你应该覆盖

getViewTypeCount()

getItemViewType(int position)

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

当提供 ViewTypeCount > 1 时,Listview 知道您使用不同的布局并为您提供适当的回收 ListItem。有关更多信息,请参阅本教程。

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

于 2012-07-31T17:57:55.310 回答