5

データベースから水泳の成績を取得します。彼の値に応じて、1 つのフィールドの背景色を変更したいと思います。たとえば、4 周泳ぐ場合、背景色が必要です。背景を正しく設定するこのコードを試してみましたが、テキストが消えます。

        String[] columns = new String[] { "swimm_pos", "swimm_date","swimm_lap", "swimm_stroke", "swimm_time", "swimm_media", "swimm_efficiency", "swimm_note" };
        int[] to = new int[] { R.id.row_counter, R.id.swimm_date, R.id.swimm_lap, R.id.swimm_stroke, R.id.swimm_time, R.id.swimm_medialap, R.id.swimm_efficiency, R.id.swimm_note};

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(
            this, 
            R.layout.contacto_list_item, 
            cursor, 
            columns, 
            to);

        adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
            public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
              if (view.getId() == R.id.swimm_lap)
                { 
                  int color = cursor.getInt(columnIndex);
                  String s = String.valueOf(color);
                  if (s.equals("4")) {
                  TextView tv = (TextView)view;
                  tv.setBackgroundColor(0xFF558866);}
                 return true;

            }
              return false;}

        });

また、ラップが 4 に等しい場合、別のフィールドの背景色を設定することもできます。たとえば、私のコードでは: R.id.swimm_pos? ありがとうございました。

4

2 に答える 2

3

ViewBinder から true を返すことは、データをビューにもバインドしていることを意味します。

しかし、あなたの場合、R.id.swimm_lap のテキストを設定していません。

したがって、return ステートメントの前に setText を追加します

tv.setText(s);
return true;

編集:2番目の質問では、スイムラップに応じて R.id.row_counter の背景を変更し、追加したいとします

else if (view.getId() == R.id.row_counter){ 
 int color = cursor.getString(cursor.getColumnIndex("swimm_lap")); 
 if (s.equals("4")) {
     view.setBackgroundColor(0xFF558866);
 }
}
于 2012-12-16T09:46:53.630 に答える
0

解決済み、ここに正しいコード:

         adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
            public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
              if (view.getId() == R.id.row_counter)
                { 
                  int color = cursor.getInt(cursor.getColumnIndex("swimm_lap"));
                  String s = String.valueOf(color);
                  if (s.equals("4")) {
                  TextView tv = (TextView)view;
                  tv.setBackgroundColor(0xFF558866);
                              }
                 return true;
            }
              return false;}
        });
    this.setListAdapter(adapter);
    datasource.close();
}
于 2012-12-16T16:12:05.540 に答える