以特定重复模式设置Listview项目的颜色

时间:2014-02-14 22:41:10

标签: android listview loops android-listview

我想知道如何创建一个循环来为重复发生的模式中的每个listview项目设置特定的背景颜色。假设我有10个项目和4种颜色,我希望10个项目按照图案的顺序着色并重复,直到项目全部着色。考虑到我在整数数组中有以下颜色:

int[] colours = {Color.RED, Color.BLUE, Color.GREEN, Color.MAGENTA};

2 个答案:

答案 0 :(得分:3)

好吧,我会为此实现自定义AdapterViewBinder

如果是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)

首先,您必须明确两件事:

  1. 这应该在getView()
  2. 的过程中进行
  3. getView()呈现您的行,但不会按顺序呈现。性能在很大程度上取决于您的布局实现,但您不能保证您的行将按顺序呈现。
  4. 那就是说,我认为可以有办法做到这一点:

    • 在将数据传递到ArrayAdapter之前,在ArrayList中定义一个额外的变量,如果您还没有使用它,则应该使用一个类。
    • 为其指定要设置的背景编号。理想情况下,这应该是int,并且您要设置Color.YOURCOLOR
    • 在您的getView()方法中进行处理后,获取该行的数据并直接致电:

      YourClass item = (YourClass) getItem[position];
      convertView.setBackgroundColor(item.getMyColor());