根据从Json解析的项目更改listView行背景颜色

时间:2014-11-14 07:02:43

标签: java android json listview getview

嗨,我非常了解编程,但问题是我正在从json解析数据。因此,我的目标是根据项目为何时的条件设置每行的背景颜色;

狗或猫或大象或犀牛或狮子他们各自的列表视图背景颜色应该是 蓝色,红色,黄色,绿色

       {
        "pets" : {
          "dog_id"   : 1,
          "dog_name" : "Dave",
          "cat_id"   : 2,
          "cat_name" : "Prudie"
            "elephant_id" : 3,
            "elephant_name" : "Poncho",
            "lion_id ": 4
            "lion_name" : "King"

        }
      }

请帮助,我可以解析这个JSON,但我希望listView显示不同的颜色。到目前为止,我可以更改listView的整个背景,每个项目的文本,但无法有条件地执行行颜色。

5 个答案:

答案 0 :(得分:2)

你必须

1. Create a custom adapter class
2. With custom adapter, you will create custom view for each row,
3. In getView method of adapter you can change background color as you wish, just like you did to listView.

答案 1 :(得分:1)

正如其他人所解释的那样,这很简单。 但是,请记住,当视图被回收时,背景将不会自动返回到默认颜色。您必须将背景颜色设置为透明或任何您想要的颜色。要做到这一点,简单的if else语句就足够了。很容易忘记这一点,很难弄清楚为什么你会得到错误的颜色。

答案 2 :(得分:0)

您需要创建自定义适配器类。

使用以下内容更改getView方法:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);
    TextView textView = (TextView) view.findViewById(R.id.textView);
    if(textView.getText().toString().equalsIgnoreCase("elephant"))  //condition to check its text
    {
        //set color to blue
    }
    else if(textView.getText().toString().equalsIgnoreCase("lion"))
    {
        //set color to brown
    }
    return view;
}

希望它有所帮助。

答案 3 :(得分:0)

您必须使用Custom Adapter

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // assumed pet_name holds your string to check
        // Then set color according to your requirement
        if(pet_nane.equalsIgnoreCase("dog"))
        {
            convertView.setBackgroundColor(android.R.color.black);
        }else if(pet_nane.equalsIgnoreCase("cat"))
        {
            convertView.setBackgroundColor(android.R.color.white);
        }
        else{
            convertView.setBackgroundColor(android.R.color.transparent);
        }
        return convertView;
    }

答案 4 :(得分:0)

谢谢大家,

我得到了它的工作正常,我使用了宠物的身份

@Override
    public View getView(int position, View convertView, ViewGroup parent) {

        Pets petId = getItem(position);

        if(petId.dog_id == 1)
        {
            convertView.setBackgroundColor(Color.BLUE);
        }else if(petId.cat_id == 2)
        {
            convertView.setBackgroundColor(Color.RED);
        }
        }else if(petId.elephant_id == 3)
        {
            convertView.setBackgroundColor(Color.YELLOW);
        }
        }else if(petId.lion_id == 4)
        {
            convertView.setBackgroundColor(Color.GREEN);
        }
        else{
            convertView.setBackgroundColor(Color.WHITE);
        }
        return convertView;
    }