Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据内容绘制ListView_Java_Android_Listview_Colors_Rows - Fatal编程技术网

Java 如何根据内容绘制ListView

Java 如何根据内容绘制ListView,java,android,listview,colors,rows,Java,Android,Listview,Colors,Rows,我试图在列表视图中绘制行,具体取决于它的内容。 我有int-int[]State=newint[]{1,1,1,1,1,0,0}的数组 我需要根据数组中的值将每一行绘制成红色或绿色。绿色的旗帜是0,红色的旗帜是1。 例如:int[]State=newint[]{1,1,1,1,1,0,0} 编号为0-5的行必须为红色,编号为5-9的行必须为红色 我有一个适配器: public class SpecialAdapter extends SimpleAdapter { private int

我试图在列表视图中绘制行,具体取决于它的内容。 我有int-
int[]State=newint[]{1,1,1,1,1,0,0}的数组
我需要根据数组中的值将每一行绘制成红色或绿色。绿色的旗帜是0,红色的旗帜是1。
例如:
int[]State=newint[]{1,1,1,1,1,0,0}

编号为0-5的行必须为红色,编号为5-9的行必须为红色

我有一个适配器:

public class SpecialAdapter extends SimpleAdapter {
    private int[] colors = new int[] {Color.RED, Color.GREEN };

    private int[] State= new int[] {1,1,1,1,1,1,0,0,0,0};


    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);
      ///It makes my list red-green, like zebra, but I need to paint depending on flags in State
      int colorPos = position % colors.length;      
      view.setBackgroundColor(colors[colorPos]);
      return view;
    }
}

您应该更改getView方法<代码>int colorPos=位置%colors.length返回“0”或“1”。因此
颜色[colorPos]
按顺序返回红色和绿色。请试试这个

    public class SpecialAdapter extends SimpleAdapter {
    private int[] colors = new int[] {Color.RED, Color.GREEN };

    private int[] State= new int[] {1,1,1,1,1,1,0,0,0,0};


    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[State[position]]);

      return view;
    }
}
公共类SpecialAdapter扩展了SimpleAdapter{
私有int[]颜色=新int[]{Color.RED,Color.GREEN};
私有int[]状态=新int[]{1,1,1,1,1,1,0,0};
公共SpecialAdapter(上下文上下文、列表项、int资源、字符串[]从、int[]到){
超级(上下文、项目、资源、发件人、收件人);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
view.setBackgroundColor(颜色[状态[位置]);
返回视图;
}
}

您的代码看起来应该可以工作。有什么问题吗?
    public class SpecialAdapter extends SimpleAdapter {
    private int[] colors = new int[] {Color.RED, Color.GREEN };

    private int[] State= new int[] {1,1,1,1,1,1,0,0,0,0};


    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[State[position]]);

      return view;
    }
}