【发布时间】:2014-05-14 04:18:04
【问题描述】:
我有一个 simpleAdapter,它从 json 获取数据并将其放在一个列表视图中,如下所示:
adapter = new SimpleAdapter(
// Updating listview
getActivity(), arrMeetings,
R.layout.meeting_item, new String[] {mtTAG_MEETINGNAME, mtTAG_DATE, mtTAG_TIME, mtTAG_LOCATION, mtTAG_MEETINGSTATUS},
new int[] { R.id.txtTitleMeeting, R.id.txtDatetime, R.id.txtTime, R.id.txtLocation, R.id.txtStatusMeeting});
我想为 textview txtStatusMeeting 设置颜色,颜色由 json 中的数据决定:Done 为红色,Incoming 为蓝色。
如果没有自定义适配器,有没有办法做到这一点?
更新
我现在已经完成了。谢谢你们。 最终代码如下:
adapter = new SimpleAdapter(
// Updating listview
getActivity(), arrMeetings,
R.layout.meeting_item, new String[] {mtTAG_MEETINGNAME, mtTAG_DATE, mtTAG_TIME, mtTAG_LOCATION, mtTAG_MEETINGSTATUS},
new int[] { R.id.txtTitleMeeting, R.id.txtDatetime, R.id.txtTime, R.id.txtLocation, R.id.txtStatusMeeting}){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
for(int i=0;i<arrMeetings.size();i++){
if(v == null){
LayoutInflater vi = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v=vi.inflate(R.layout.meeting_item, null);
}
TextView txtTitleMeeting = (TextView) v.findViewById(R.id.txtTitleMeeting);
TextView txtDatetime = (TextView) v.findViewById(R.id.txtDatetime);
TextView txtTime = (TextView) v.findViewById(R.id.txtTime);
TextView txtLocation = (TextView) v.findViewById(R.id.txtLocation);
TextView txtStatusMeeting = (TextView) v.findViewById(R.id.txtStatusMeeting);
txtTitleMeeting.setText(arrMeetings.get(position).get(mtTAG_MEETINGNAME));
txtDatetime.setText(arrMeetings.get(position).get(mtTAG_DATE));
txtTime.setText(arrMeetings.get(position).get(mtTAG_TIME));
txtLocation.setText(arrMeetings.get(position).get(mtTAG_LOCATION));
if(arrMeetings.get(position).get(mtTAG_MEETINGSTATUS).equals("Today")){
txtStatusMeeting.setText(arrMeetings.get(position).get(mtTAG_MEETINGSTATUS));
txtStatusMeeting.setTextColor(getActivity().getResources().getColor(R.color.Today));
}else if(arrMeetings.get(position).get(mtTAG_MEETINGSTATUS).equals("Incoming")){
txtStatusMeeting.setText(arrMeetings.get(position).get(mtTAG_MEETINGSTATUS));
txtStatusMeeting.setTextColor(getActivity().getResources().getColor(R.color.Incoming));
}else if(arrMeetings.get(position).get(mtTAG_MEETINGSTATUS).equals("Done")){
txtStatusMeeting.setText(arrMeetings.get(position).get(mtTAG_MEETINGSTATUS));
txtStatusMeeting.setTextColor(getActivity().getResources().getColor(R.color.Done));
}
}
return v;
}
};
【问题讨论】:
-
在
meeting_item.xml中设置颜色 -
我想你可能不需要使用自定义适配器 ....
-
如果您在 xml 中设置颜色,该颜色将用于所有项目的文本视图。如果要根据值更改颜色,请使用自定义适配器。为什么不自定义适配器? stackoverflow.com/questions/20611123/…
-
我知道自定义适配器可以在这里使用,但我想尝试不使用它。
标签: android