私が正しくあなたの質問を理解している場合、1つの解決策は、このように、あなたのレイアウトでImageViewのを含めることであろう。
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.history_list_item, cursor, new String[] { Tracks.SYMBOL,
Tracks._ID, Tracks.ACTIVITY },
new int[] { R.id.symbol, R.id.id, R.id.activity });
上記のコードでは、Tracks.SYMBOLはリソースIDを持つテーブルの列で、R.id.symbolはImageViewのIDです。次に、SimpleCursorAdapter.ViewBinderインターフェイスを実装し、実装をカーソルアダプタに設定する必要があります。
例を見る前に、考慮すべき点が1つあります。Tracks.SYMBOLというカーソルの列は、R.drawableクラスの目的のリソースフィールドと等しい値の整数を持つことができます。これらのフィールドは自動的に生成されるので便利ではないので、そのフィールドの値を制御することはできません。 1つの解決策は、クラスフィールド名でStringを格納し、フィールド値を取得するためにリフレクションを使用することです。ここ
は、以前に定義されたアダプタに接続されViewBinderの例である:setViewValue方法に
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
boolean binded = false;
if (view instanceof ImageView) {
int resourceId R.drawable.default_img;
String image = cursor.getString(columnIndex).trim();
try {
resourceId = R.drawable.class.getField(image).getInt(null);
} catch (NoSuchFieldException e) {
}
((ImageView) view).setImageResource(resourceId);
binded = true;
}
return binded;
}
});
ワンポイントは、それがfalseを返す場合、SimpleCursorAdapterは、それが通常の方法で結合を実行することですそうです。しかし、そのメソッドがtrueを返す場合、SimpleCursorAdapterはジョブが完了したとみなし、そのフィールドをもうバインドしようとしません。
Androidプログラミングを始めたばかりです。私はあるプロジェクトでそういったことをして、うまくいった。私は簡単な方法があるかどうかわかりません。
よろしくお願いいたします。
すぐに回答ありがとうございます、私はそれを使用します:) – user1199476
@ user1199476あなたが正しい答えを得た場合は、それをチェックしてください。それは将来の使用のために参考になります。 –