Java Android列表视图着色项目

Java Android列表视图着色项目,java,android,listview,Java,Android,Listview,我的JSON有两个字段——姓名和性别。 如果性别是男性,我想把每个名字涂成蓝色,如果是女性,我想把它涂成粉红色 这是我的密码 ArrayList feedList1 = new ArrayList<HashMap<String, Object>>(); for (int i = 0; i < data.length(); i++) { HashMap<String, Object> hm; hm = new HashMap<St

我的JSON有两个字段——姓名和性别。 如果性别是男性,我想把每个名字涂成蓝色,如果是女性,我想把它涂成粉红色

这是我的密码

ArrayList feedList1 = new ArrayList<HashMap<String, Object>>();


for (int i = 0; i < data.length(); i++) {
    HashMap<String, Object> hm;
    hm = new HashMap<String, Object>();

    hm.put("id", data.getJSONObject(i).getString("id").toString());
    hm.put("gender", data.getJSONObject(i).getString("gender").toString());
    hm.put("name", data.getJSONObject(i).getString("name").toString());
    feedList1.add(hm);
    SimpleAdapter adapter = new SimpleAdapter(feedList.getContext(), feedList1, R.layout.list,
            new String[] {"id","name"}, new int[] { R.id.personId, R.id.personName }){
        @Override
        public void setViewText(TextView v, String text) {
            super.setViewText(v, text);
            if (v.getId() == R.id.personName) {

                if (/* how to get gender of this person*/) 
                    v.setTextColor(R.color.female); 
                else
                    v.setTextColor(R.color.male);
            }
        }

    };

    feedList.setAdapter(adapter);
    feedList.setChoiceMode(feedList.CHOICE_MODE_SINGLE);
}
ArrayList feedList1=新建ArrayList();
对于(int i=0;i

请告诉我如何将性别添加到IF语句。

我认为在使用此语句之前必须先获取字符串值。。因此,您必须通过以下方式来实现:

String gender = hm.get("gender");
if (gender.equals("male"))
    dosomething;
else
    doAnotherThing;
我想你也必须让hm成为决赛!!!
我希望这对你有帮助

您应该重写getView方法而不是setViewText。但如果您非常希望使用setViewText,您可以将对象的名称设置为类似“thomas&man”的名称,然后您可以使用分隔符“&”将字符串分割为字符串数组,数组的第二项将是您的性别。但更好的使用方法是重写getView方法,这是正确的方法。

如果不创建自己的自定义适配器,则无法执行此操作,因此可以重写getView。检查以下代码并使用CustomAdapter而不是SimpleAdapter

class CustomAdapter extends SimpleAdapter {

    public CustomAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
        super(context, data, resource, from, to);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);

        Map<String, Object> item = (Map<String, Object>) getItem(position);
        if ("male".equals(item.get("gender").toString())) {
            view.setBackgroundColor(R.color.male);
        } else {
            view.setBackgroundColor(R.color.female);
        }

        return view;
    }
}
class CustomAdapter扩展了SimpleAdapter{
公共CustomAdapter(上下文上下文,列表>数据,int资源,字符串[]从,int[]到){
超级(上下文、数据、资源、从、到);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
映射项=(映射)getItem(位置);
if(“male”.equals(item.get(“gender”).toString()){
视图.背景色(R.color.男性);
}否则{
视图.背景色(R.color.女性);
}
返回视图;
}
}

您需要使用一个自定义适配器,并在“getView()”方法中测试(gender==male){set male background}else{female background}是否对我有效。塔克斯。只有一个问题-如何设置textColor而不是backgroundcolor?您可以使用view.findViewById(R.id.name).setTextColor(R.color.male);