Текст SimpleCursorAdapter.ViewBinder не отображается

Я столкнулся с проблемой, и я не могу найти решение.

У меня есть база данных, и я загружаю список с помощью SimpleCursorAdapter.

Я хочу изменить цвет текста в зависимости от значения столбца в базе данных ("incOrExp").

Это мой пункт списка:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:background="#afeeee" >

<TextView 
android:id="@+id/incomeTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:paddingTop="5dp"
android:paddingLeft="20dp"
android:paddingBottom="2dp"
android:textSize="20sp"
android:textColor="#b22222" />

<TextView
android:id="@+id/amountTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/currencyTextView"
android:paddingTop="10dp"
android:paddingRight="5dp"
android:paddingBottom="5dp"
android:textColor="#0000cd"
android:textSize="20sp" />

<TextView
android:id="@+id/currencyTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:paddingTop="10dp"
android:paddingRight="20dp"
android:paddingBottom="5dp"
android:textColor="#0000cd"
android:textSize="20sp"
android:text="€" />

<TextView
android:id="@+id/dateTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/incomeTextView"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:paddingTop="2dp"
android:paddingLeft="20dp"
android:paddingBottom="5dp"
android:textColor="#0000cd"
android:textSize="12sp" />

</RelativeLayout>

Я хочу изменить цвет (TextView)amountTextView с помощью SimpleCursorAdapter.ViewBinder()

Это мой код:

    String[] from = new String[] {"inCategory","inAmount","inDateFormat"}; 
    int[] to = new int[] { R.id.incomeTextView, R.id.amountTextView, R.id.dateTextView}; 

    incomeAdapter = new SimpleCursorAdapter (this, R.layout.income_list_item, null, from, to);

    incomeAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
          if (view.getId() == R.id.amountTextView)
            { 
              int incOrExpIndex = cursor.getColumnIndex("incOrExp");
              int incOrExp = cursor.getInt(incOrExpIndex);
              if (incOrExp==1) {
              TextView tvColor = (TextView)view;
              tvColor.setTextColor(Color.YELLOW);
              }
              else {
                  TextView tvColor = (TextView)view.findViewById(R.id.amountTextView);
                  tvColor.setTextColor(Color.RED);
              }
             return true;

        }
          return false;}

    });

    incomeListView.setAdapter(incomeAdapter); 

Где моя вина?

Заранее спасибо..


person N.K.    schedule 09.03.2013    source источник


Ответы (1)


Я нашел ответ...

Мне нужно было установить цвет, и после этого мне также пришлось установить текст....

incomeAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
          if (view.getId()==R.id.amountTextView)
            { 
              int incOrExpIndex = cursor.getColumnIndex("incOrExp");
              int incOrExp = cursor.getInt(incOrExpIndex);

            switch(incOrExp) {
                case 0: 
                    TextView tv0 = (TextView)view;
                    tv0.setTextColor(Color.BLUE);
                    tv0.setText(cursor.getString(cursor.getColumnIndex("inAmount")));
                    break;
                case 1: 
                    TextView tv1 = (TextView)view;
                    tv1.setTextColor(Color.RED);
                    tv1.setText(cursor.getString(cursor.getColumnIndex("inAmount")));
                    break;
              }
             return true;

        }
          return false;}
    });

Хочу поблагодарить людей, которые пытались решить эту проблему...

person N.K.    schedule 09.03.2013
comment
Я ценю двойное возвращение :-) - person GhostCat; 13.02.2019