在simpleAdapter中设置textview的颜色



我有一个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"

最新更新