2011-05-14 13 views
1

ユーザーはEditTextフィールドにアーティスト名を入力でき、それがsqliteテーブルに追加されるアプリケーションがあります。それはうまくいくが、私はこれらの新しい変更で更新したいのと同じ活動/レイアウト上のスピナーを持っている。ここに私はそれをセットアップしている方法です:SQLiteが更新されたときにスピナーを更新する

私はテーブルを照会し、 'ArtistList'配列を返す新しい名前とメソッドを挿入するsqliteクラスがあります。

私の活動では、最初に作成したときにArrayListを使用してArtistListをスピナーに入れることができます。

ユーザーは、のEditTextに新しい名前を入力するsqliteのテーブルを更新し、成功...

、私はsqliteのメソッドArtistListを実行して、ArrayListのとArrayAdapterをリロードしようとしましたが、スピナーはまだ更新されません。それはまだ更新の前に同じ古いリストを持っています。私はただartistList.add()を行うことができますが、それはリストを順不同にするでしょう。私はアルファベット順にこのリストを持っています。なぜsqliteクラスからArrayListを取得しているのですか?sqliteは私のためにデータを整理しています。

私はsetNotifyOnChangeを使って試してみましたが、私は新しい(そしてクリアする)arraylistとアダプタを試しました...何も動作していません。

これが走ったのonCreateである:あなたの助けのための

sqlclass helper = new sqlclass(this); 
     SQLiteDatabase db = helper.getWritableDatabase(); 
     artistList = helper.getArtistList(db, tableName); 
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, artistList); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     adapter.setNotifyOnChange(true); 

ありがとう!

Nevermind ... 私は新しいアダプタを作成してしまいました...そして、spinner.setAdapter(adapter)を追加しました。そのスピナーが更新まで見つかったので表示されていたのかどうかは分かりませんが、現在は動作しています...

答えて

0

私はこのことが曖昧であることをお詫びしますが、データセットを再クエリして更新する必要があります。

+0

私のsqliteでCursorAdapterを使用していますか?私はそれを理解していないので、私はGoogleでこれを研究しています。 CursorAdapterはArrayListの作成に役立つはずですか?私は更新されたarraylistをうまく取得することができるので、ちょうどスピナーは更新されていません。 –

+0

私はお詫びします、私はすぐにその答えを打ち抜き、それをバックアップすることはあまりありませんでした...もしあなたが配列アダプターを使用しているなら、あなたのデータセットであるリストへの参照を保持していますか?そうであれば、setNotifyOnChange(true)(falseに設定)をオフにして、新しいデータセットでaddAll()を呼び出してからnotifyDataSetChanged()を呼び出します。 モデルでスイングしながらDataAdaptersでこれを行う必要がありました彼らが持っていたセットアップ。 もう一度漠然とした返答をお詫び申し上げます。 –

関連する問題