2017-01-16 56 views
0

我正在成功将JSON数据提取到listView,但我想通过比较JSON数据来更改该listView中textView的颜色。 为前如何在比较JSON数据时更改android listView中textView的颜色?

如果JSON {“地位”:“批准”} - 绿色 否则,如果{“地位”:“不赞成”} - 红色

我可以在使用改变它在SimpleAdapter中使用getView,但无法比较字符串。 当我打印状态时,它只显示“已批准”。 如果条件不符合,我无法过滤“已拒登”。

SimpleAdapter adapter = new SimpleAdapter(getActivity(), mylist, R.layout.list_leave_approval, 
         new String[]{ 
           TAG_STATUS 
           }, 
         new int[]{ 

           R.id.status}) { 
        @Override 
        public View getView(int position, View convertView, ViewGroup parent) { 
         //return super.getView(position, convertView, parent); 

         View v = convertView; 
         if (v == null) { 
          // View v = convertView; 
          LayoutInflater vi = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
          v = vi.inflate(R.layout.list_leave_approval, null); 

          TextView test = (TextView) v.findViewById(R.id.status); 


          // String str = jsonObject.getString("status"); 

          Log.d("Day", "get view STATUS: " + strStatus); 
          // jsonObject = jsonArray.getJSONObject(i); 

          if (strStatus.equals(" Approved ")) { 
           test.setBackgroundColor(getResources().getColor(R.color.green)); 
           // txtStatus.setText("DEC"); 

          } else if (strStatus.equals(" Disapproved ")) { 
           test.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light)); 

          } 
         } 

         return super. 

           getView(position, v, parent); 

        } 
       }; 

       list.setAdapter(adapter); 
+0

添加你的列表视图代码,你想把这些! – W4R10CK

+0

添加..请参阅 –

回答

0

你可以这样做。

这里字符串将被解析的json字符串。

JSONObject jObj = new JSONObject(String); 
    if (jObj.getString("status").equalsIgnoreCase("approved")) { 
     textView1.setTextColor(Color.GREEN) 
    } else { 
      textView1.setTextColor(Color.RED) 
    } 
+0

试过..没有工作..我想改变它在listView中没有任何活动或片段。 –

+0

添加一些代码来了解您的问题 –

+0

请参阅我的问题 –

0

我建议你阅读有关MVC设计模式

你应该让你的JSON在例如状态对象的数据对象(模型MVC),并把从JSON所有需要的数据到这个对象

在填充的ListView根据状态调整视图:

if(items[index].getStatus.equals("approved")) 
     textView.setTextColor(ContextCompat.getColor(context, R.color.green)); 
else if(items[index].getStatus.equals("disapproved")) 
     textView.setTextColor(ContextCompat.getColor(context, R.color.red)); 
+0

中的更新代码,请参阅我的问题中更新的代码。 –

0

你将需要覆盖一个更复杂类型的适配器中为了做你想做的事情,SimpleAdapter只允许以一种非常简单的方式将文本设置为字符串。

喜欢的东西ArrayAdapter可能是更好的选择,在这种情况下,你可以使用代码迈克尔已经显示出ArrayAdapter的getView方法来改变文本的显示。

你也可以看看SpannableString允许添加颜色到文字,但这需要能够提供代码,以确定该项目的状态。

相关问题