Android 设置特定重复模式中Listview项的颜色

Android 设置特定重复模式中Listview项的颜色,android,listview,loops,android-listview,Android,Listview,Loops,Android Listview,我想知道如何创建一个循环,以便在重复出现的模式中为每个listview项设置特定的背景颜色。假设我有10件物品和4种颜色,我希望10件物品按照图案的顺序上色,并重复上色,直到所有物品都上色。考虑到我在整数数组中有以下颜色: int[] colours = {Color.RED, Color.BLUE, Color.GREEN, Color.MAGENTA}; 好的,我将为此实现一个定制的适配器或ViewBinder 对于适配器,例如ArrayAdapter,您必须覆盖getView方法 ...

我想知道如何创建一个循环,以便在重复出现的模式中为每个listview项设置特定的背景颜色。假设我有10件物品和4种颜色,我希望10件物品按照图案的顺序上色,并重复上色,直到所有物品都上色。考虑到我在整数数组中有以下颜色:

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

好的,我将为此实现一个定制的
适配器
ViewBinder

对于
适配器
,例如
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;
}
....

好的,我将为此实现一个定制的
适配器
ViewBinder

对于
适配器
,例如
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;
}
....

首先,你必须清楚两件事:

  • 这应该在
    getView()的过程中进行
  • getView()
    呈现行,但不按顺序呈现。性能在很大程度上取决于布局实现,但不能保证按顺序呈现行
  • 也就是说,我认为有一种方法可以做到这一点:

    • 在将数据传递到
      ArrayAdapter
      之前,请在
      ArrayList
      中定义一个额外变量,如果尚未使用该类,则应使用该类
    • 为其指定要设置的背景编号。理想情况下,这应该是一个带有
      颜色的
      int
    • getView()方法中进行处理后,获取该行的数据并调用:

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

    首先,你必须清楚两件事:

  • 这应该在
    getView()的过程中进行
  • getView()
    呈现行,但不按顺序呈现。性能在很大程度上取决于布局实现,但不能保证按顺序呈现行
  • 也就是说,我认为有一种方法可以做到这一点:

    • 在将数据传递到
      ArrayAdapter
      之前,请在
      ArrayList
      中定义一个额外变量,如果尚未使用该类,则应使用该类
    • 为其指定要设置的背景编号。理想情况下,这应该是一个带有
      颜色的
      int
    • getView()方法中进行处理后,获取该行的数据并调用:

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

    在定义阵列适配器之前,您知道顺序吗?这个名单会改变吗?如果更改,是否必须更改行的背景?是,这是预定义的顺序,不必更改。在定义阵列适配器之前,您知道顺序吗?这个名单会改变吗?如果更改,是否必须更改行的背景?是,这是预定义的顺序,不必更改。我已尝试过所有此类情况,没有一个保持相同的重复顺序。请使用编辑的代码重试。我测试了它,它应该可以工作。我已经尝试了所有这样的情况,没有一个保持相同的重复顺序。请使用编辑过的代码重试。我测试了它,它应该能工作。