2013-03-09 4 views
0

문제가 누적되어 해결책을 찾을 수 없습니다.SimpleCursorAdapter.ViewBinder 텍스트가 표시되지 않습니다.

데이터베이스가 있고 SimpleCursorAdapter을 사용하여 목록보기를로드합니다.

데이터베이스 ("incOrExp")의 열 값에 따라 텍스트의 색을 변경하고 싶습니다.

이 내 목록 항목입니다 :

: 나는 SimpleCursorAdapter.ViewBinder를 사용하여 (텍스트 뷰)의 색상 amountTextView을 변경하려면

<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> 

()

이 내 코드입니다

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); 

내 잘못은 어디입니까? ....

내가 색상을 설정했다 내가 대답을 발견

답변

2

... .. 사전에 감사하고 그 후 나는 너무의 setText했다

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;} 
    }); 

이 문제를 해결하려고 노력한 사람들에게 감사 드리고 싶습니다 ...

관련 문제