来自光标的Android ViewBinder值

来自光标的Android ViewBinder值,android,listview,cursor,android-viewbinder,Android,Listview,Cursor,Android Viewbinder,希望有人能帮我。我有一个包含listview的布局,列表视图中的每个项目都包含单独的文本字段,以表示一周中的天数-->SMTWTFS 我试图做的是改变文本项的颜色,如果它们是在数据库中设置的。这几乎可以工作,但我注意到列表视图中的第一行在其他列表行中设置时会更改所有项目的颜色 我的文本项声明如下 textSUN = (TextView) v.findViewById(R.id.textSUN); textMON = (TextView) v.findViewByI

希望有人能帮我。我有一个包含listview的布局,列表视图中的每个项目都包含单独的文本字段,以表示一周中的天数-->SMTWTFS 我试图做的是改变文本项的颜色,如果它们是在数据库中设置的。这几乎可以工作,但我注意到列表视图中的第一行在其他列表行中设置时会更改所有项目的颜色

我的文本项声明如下

        textSUN = (TextView) v.findViewById(R.id.textSUN);
        textMON = (TextView) v.findViewById(R.id.textMON);
        textTUE = (TextView) v.findViewById(R.id.textTUE);
        textWED = (TextView) v.findViewById(R.id.textWED);
        textTHU = (TextView) v.findViewById(R.id.textTHU);
        textFRI = (TextView) v.findViewById(R.id.textFRI);
        textSAT = (TextView) v.findViewById(R.id.textSAT);
然后我查询我的数据库并设置适配器

db = new DatabaseHandler(getActivity());

            mCursor=db.getReadableDatabase().rawQuery("SELECT rowid _id,* "+
                              "FROM table", null);

            adapter = new SimpleCursorAdapter(getActivity(),
                    R.layout.list_row, mCursor,
                    new String[] {DatabaseHandler.KEY_SUNDAY, DatabaseHandler.KEY_MONDAY,DatabaseHandler.KEY_TUESDAY,DatabaseHandler.KEY_WEDNESDAY, DatabaseHandler.KEY_THURSDAY, DatabaseHandler.KEY_FRIDAY,
                            DatabaseHandler.KEY_SATURDAY,},
                    new int[] {R.id.textSUN,R.id.textMON, R.id.textTUE, R.id.textWED, R.id.textTHU, R.id.textFRI, R.id.textSAT}); 
最后,如果db返回的值是1,我尝试在视图绑定器中设置颜色

adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
                @Override
            public boolean setViewValue(View view, Cursor cursor, int 
                    columnIndex) { 

                 final int sun_column = cursor.getColumnIndex("sun");
                 final int mon_column = cursor.getColumnIndex("mon");
                 final int tue_column = cursor.getColumnIndex("tue");
                 final int wed_column = cursor.getColumnIndex("wed");
                 final int thu_column = cursor.getColumnIndex("thu");
                 final int fri_column = cursor.getColumnIndex("fri");
                 final int sat_column = cursor.getColumnIndex("sat");

                 }

                 if (columnIndex == sun_column) {

                     int sun = cursor.getInt(cursor.getColumnIndexOrThrow("sun"));
                     if(sun == 1){
                         ((TextView) view).setTextColor(Color.parseColor("#FFFFFF")); 
                     }
                 return true; 

                 }

                 if (columnIndex == mon_column) {

                     int mon = cursor.getInt(cursor.getColumnIndexOrThrow("mon"));
                     if(mon == 1){
                         ((TextView) view).setTextColor(Color.parseColor("#FFFFFF")); 
                     }
                 return true; 

                 }

                 if (columnIndex == tue_column) {

                     int tue = cursor.getInt(cursor.getColumnIndexOrThrow("tue"));
                     if(tue == 1){
                         ((TextView) view).setTextColor(Color.parseColor("#FFFFFF")); 
                     }
                 return true; 

                 }

                 if (columnIndex == wed_column) {

                     int wed = cursor.getInt(cursor.getColumnIndexOrThrow("wed"));
                     if(wed == 1){
                         ((TextView) view).setTextColor(Color.parseColor("#FFFFFF")); 
                     }
                 return true; 

                 }

                 if (columnIndex == thu_column) {

                     int thu = cursor.getInt(cursor.getColumnIndexOrThrow("thu"));
                     if(thu == 1){
                         ((TextView) view).setTextColor(Color.parseColor("#FFFFFF")); 
                     }
                 return true; 

                 }

                 if (columnIndex == fri_column) {

                     int fri = cursor.getInt(cursor.getColumnIndexOrThrow("fri"));
                     if(fri == 1){
                         ((TextView) view).setTextColor(Color.parseColor("#FFFFFF")); 
                     }
                 return true; 

                 }

                 if (columnIndex == sat_column) {

                     int sat = cursor.getInt(cursor.getColumnIndexOrThrow("sat"));
                     if(sat == 1){
                         ((TextView) view).setTextColor(Color.parseColor("#FFFFFF")); 
                     }
                 return true; 

                 }
                 return false;
                 } 
            }); 

        lv = (ListView) v.findViewById(R.id.listView);

        lv.setAdapter(adapter);
也许我把这一切都搞错了??但它几乎能起作用


非常感谢

您仍然需要处理周一、周二等==0的情况。将以下内容添加到每个if语句中应该可以解决此问题:

else {
((TextView) view).setTextColor(//color that you want if day == 0);
}

也可以考虑改变整个StVIEW值,使用一个Switter语句,它应该使COD更加可读。