Java 如何根据内容绘制ListView
我试图在列表视图中绘制行,具体取决于它的内容。 我有int-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[]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;
}
}