我目前有一个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;
}
}
希望这是有道理的
答案 0 :(得分:0)
你应该覆盖
getViewTypeCount()
和
getItemViewType(int position)
在ListAdapter中为每种颜色定义不同的类型。仅在BindView中更改颜色的解决方案不会产生良好的结果,因为Listview会回收ListItems,因此您最终会来回更改recyled项目的颜色。
提供ViewTypeCount&gt; 1 Listview知道您使用不同的布局并为您提供适当的recyled ListItem。 有关详细信息,请参阅此教程。