我想知道如何创建一个循环来为重复发生的模式中的每个listview项目设置特定的背景颜色。假设我有10个项目和4种颜色,我希望10个项目按照图案的顺序着色并重复,直到项目全部着色。考虑到我在整数数组中有以下颜色:
int[] colours = {Color.RED, Color.BLUE, Color.GREEN, Color.MAGENTA};
答案 0 :(得分:3)
好吧,我会为此实现自定义Adapter
或ViewBinder
。
如果是Adapter
,例如ArrayAdapter
,您必须覆盖getView
方法
...
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = getActivity().getLayoutInflater().inflate(R.layout.item, null);
}
view.setBackgroundColor(colors[position % colors.length]);
return view;
}
....
答案 1 :(得分:0)
首先,您必须明确两件事:
getView()
getView()
呈现您的行,但不会按顺序呈现。性能在很大程度上取决于您的布局实现,但您不能保证您的行将按顺序呈现。那就是说,我认为可以有办法做到这一点:
ArrayAdapter
之前,在ArrayList
中定义一个额外的变量,如果您还没有使用它,则应该使用一个类。int
,并且您要设置Color.YOURCOLOR
。在您的getView()
方法中进行处理后,获取该行的数据并直接致电:
YourClass item = (YourClass) getItem[position];
convertView.setBackgroundColor(item.getMyColor());