3

SimpleCursorAdapter を使用して displayname と value (両方とも DB 内) をリストし、リスト アクティビティに表示しました。

私が今やろうとしていたのは、リスト アクティビティの各アイテムに新しいビュー (ImageView) を追加することでした。最終的にはこんな感じになるはずです。

Image_1_NotInDB -- DisplayName1FromDB -- DisplayName1FromDB
Image_2_NotInDB -- DisplayName2FromDB -- DisplayName2FromDB.

画像は異なります (DisplayName1FromDB に基づく)。SimpleCursorAdapter は、この目的にはもう適していないと思います。

SimpleCursorAdapter を拡張する customSimpleCursorAdapter を作成しようとし、「newView」および「bindView」メソッドを使用して達成しようとしました。私はほとんどこれに従いました:Custom CursorAdapters

問題は; 私が使用するイメージは、DB の値に基づいています (コンストラクターまたは customSimpleCursorAdapter に渡すつもりでした)。

public View newView(Context pContext, Cursor pCursor, ViewGroup pParent)
{
    Cursor lCursor = getCursor();
    final LayoutInflater inflater = LayoutInflater.from(pContext);
    View lView = inflater.inflate(layout, pParent, false);
    int lImage = "dog".equals(variable) ? R.drawable.dog : R.drawable.cat;
    // "variable" is a member variable (set at the constructor)
    ImageView lImageView = (ImageView) lView.findViewById(R.id.appImage);
    if (lImageView != null)
    {
        lImageView.setImageResource(lImage);
    }
    return pParent;
}

public void bindView(View pView, Context pContext, Cursor pCursor)
{
    int lImage = "dog".equals(variable) ? R.drawable.dog : R.drawable.cat;
    // "variable" is a member variable (set at the constructor)
    ImageView lImageView = (ImageView) lView.findViewById(R.id.appImage);
    if (lImageView != null)
    {
        lImageView.setImageResource(lImage);
    }
}

これが「customSimpleCursorAdapter」を使ってみた方法です

    String[] lDisplay = new String[] {KEY_NAME, KEY_TIME};
    int[] lValues = new int[] {R.id.name, R.id.time};
    CustomRowCursorAdapter lCursorAdapter = new CustomRowCursorAdapter(this, R.layout.row, lSTime, lDisplay, lValues, "MY IDEA WAS TO PASS THE ANIMAL NAME HERE, BUT NOT LUCK as I am not sure How ");
    lCursorAdapter.newView(this, lSTime, getListView());
    lCursorAdapter.bindView(getListView(), this, lSTime);
    setListAdapter(lCursorAdapter);

ArrayAdapter は答えですか? はいの場合、どのパラメータを渡すか教えていただけますか?

4

3 に答える 3

1

カスタムアダプターをお勧めします

于 2011-02-20T06:16:00.737 に答える
0

データベースからプロジェクションにフィールドを追加できます。

これは、アイテムの価格(セント単位で保存)と関連する単位に基づいてコストをフォーマットするために使用した予測の例です。

public static final String CONCATE_COST
    = "'$' || CASE WHEN SUBSTR(ROUND("+COLUMN_PRICE
        +"/100.0, 2), LENGTH(ROUND("+COLUMN_PRICE
        +"/100.0, 2))-1, 1)='.' THEN ROUND("+COLUMN_PRICE
        +"/100.0, 2) || '0' else ROUND("+COLUMN_PRICE
        +"/100.0, 2) end || "+COLUMN_UNIT;

columnこれを列として使用すると、 toの法線マッピングを使用して、ビュー内のフィールドとペアにすることができますR.id.*

于 2013-03-15T00:36:55.627 に答える
0

ArrayAdapter は答えですか?

いいえ、こちらはご利用いただけませんArrayAdapter。データベースからデータを表示する必要があるため、ここでは Custom を使用する必要がありますCursorAdapter

于 2011-02-20T07:27:08.553 に答える