0

私は Android プログラミングが初めてで、基本的な質問があります。

ListActivity各行にとListViewがある を作成しましTextViewRatingBar。事前入力されたデータベースから値を読み取ることで、TextViewに値を表示できます。RatingBar私はカスタムCursorAdapterとそのbindView()メソッドを介してこれを行っています、つまり

public class MyCursorAdapter extends CursorAdapter {
    ...

    public void bindView(View view, Context context, final Cursor cursor) {
        TextView name = (TextView)view.findViewById(R.id.name);
        name.setText(cursor.getString(cursor.getColumnIndex(MyDbAdapter.KEY_NAME)));
        RatingBar rating = (RatingBar)view.findViewById(R.id.life_bar_rating);
        rating.setRating(cursor.getFloat(cursor.getColumnIndex(MyDbAdapter.KEY_RATING_VALUE)));
    }

    ...
}

さて、私の問題は、ListActivityすべての変更が一度にデータベースに保存されるように、ユーザーが「保存」ボタンをクリックできるようにしたいということです。行IDと評価値を取得して保存できるようにするには、アダプターをどのように反復処理しますか(または、これを行う別のより良い方法はありますか?)。

一度に保存したい理由は、ユーザーが単一の評価を変更するたびにデータベースを更新するのは悪い習慣だと思ったからです (これは簡単ですが)。フラッシュメモリ上。これは私の勘違いかもしれませんが、フラッシュメモリは読み書きの回数が限られていると思っていました。

4

1 に答える 1

2

アダプタのバッキング アレイを覚えていますか? 初期化に使ったやつ?それを保存します;)

またはそれがうまくいかない場合...

for(int i = 0; i < listView.getAdapter().getCount(); i++)
    SaveThing(listView.getAdapter().getItem(i));

保存のSQLiteの例が必要な場合...明日。

コメントをきれいに保つのと同じように編集します。

そのオブジェクトに関する限り、リストビューにあるものに自由にキャストできます。ビューの種類ではなく、データの種類。

たとえば、文字列を操作する arrayAdapter は引き続きオブジェクトを返します。しかし、それがあなたが入れたものであることを知っているので、それらを文字列にキャストすることは間違いありません。

于 2012-07-30T15:35:10.573 に答える