我有一个simpleAdapter从json中获取数据,并将其放在listview中,如下所示:
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;
}
};
使用get视图更改颜色:-
adp_list_news = new SimpleAdapter(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;
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);
short_news.setTextColor(Color.parseColor("#ffffff"));;
return v;
}
};
像这样在简单适配器中为所有文本视图赋予颜色,或者使用自定义适配器类来自定义适配器
进入包含"R.id.txtStatusMeeting"布局的xml布局文件
添加以下行给android预设颜色
android:background="@android:color/SELECT_THE_COLOR_PRESENT_IN ANDROID_LIBRERy"
如果你想添加自定义颜色在项目的values文件夹中添加一个名为colors.xml
的XML文件colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="status_meeting">#a79c90</color>
</resources>
你可以给任何你喜欢的颜色设置#值而不是#a79c90
,并将该行添加到要为
着色的控件的布局中。android:background="@color/status_meeting"