2

ListViewにはSimpleCursorAdapterが、各行にはTextViewsImageViewが含まれています。いくつかの値に応じて各行のImageViewを変更したいのですが、まずは入力後にリスト内のImageViewを更新する方法を見つけようとしています。私はこのコードを試みたが、ImageViewは同じまま:ViewBinderを使用してListView行の画像を更新する

cursorAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 
     public boolean setViewValue(View view, Cursor cursor, int columnIndex) {   
      int viewId = view.getId();   
      Log.v("ViewBinder", "columnIndex=" + columnIndex + " viewId = " + viewId);   
      if(viewId == R.id.imageloc)   
      { 
       sign2 = (ImageView) view; 
       sign2.setImageResource(R.drawable.other); 

       return true;   
      } 
      return false;  
      } 
     }); 

誰も私を助けることができる場合、私はそれをいただければ幸いです!

+0

また、 'cursorAdapter'でListViewで' setAdapter'を呼び出していますか? – twaddington

答えて

0

ImageViewに異なるリソースを設定しようとしているところがわかりません。それは常にR.drawable.otherです。カーソルデータに基づいてイメージリソースを変更します。

+0

申し訳ありませんが、イメージビューにはXMLで定義されたR.drawable.checkのリソースがあります。特定の条件が満たされている場合は、別のイメージに設定します。しかし、私は最初の場所で画像を変更することはできません。もし私がそれを理解できれば、私は残りを世話することができます! – 725623452362

+0

ああ。あなたのイメージビューはルートビューではないと思います。チェックビューIDを削除してImageViewを次のようにします:view.findViewById(R.id.imageloc) – muffinmad

+1

これは動作しませんでした:(オブジェクトがTextViewの場合、このコードはすべて正常に動作します。それがImageViewになった瞬間、イメージを変更したくないのです。ugh – 725623452362

2

あなただけのいくつかの値に応じて、ImageViewのを更新したい場合は、これらの値をDBに格納されている場合、あなたはこのようなSQLクエリを実行できます。このような方法でそれをやって

SELECT _id, name, CASE WHEN checked = 1 THEN 'R.drawable.check' ELSE 'R.drawable.check' END as img FROM table; 

、あなたはでしょうsetViewBinder()メソッドを使用する必要はありません。クエリを実行し、カーソルを取得してSimpleCursorAdapterに割り当て、アダプタをリストビューに割り当てます。

Cursor c = mDbHelper.fetchData(sqlQuery); 
(...) 
String[] from = new String[]{"name", "img"}; 
int[] to = new int[]{R.id.text_view, R.id.imgageloc}; 
SimpleCursorAdapter _adapter = new SimpleCursorAdapter(this, R.layout.data_rows, c, from, to); 
setListAdapter (_adapter); 

注:R.drawable.check/R.drawable.checkの整数値が必要になります: "THEN ...「" + R.drawable.check +」「ELSE .. "

あなたが必要としていることを願っています。

1

は、私がif statementに基づいて画像を設定しようとしていた非常に似たような状況で私のために働いた

sign2.setBackgroundResource(R.drawable.other); 

を試してみてください。

関連する問題