2012年11月4日日曜日

GridViewを更新 invalidate でなく notifyDataSetChanged を使え

GridView に画像をロードするときにスレッドを使う場合・・・はじめにダミー画像を入れておいて、裏のスレッドで画像をロードして・・・そのあとどうするのか?
View#invalidate() を使うのかと思ったがそうではなかった。
BaseAdapter#notifyDataSetChanged() を呼べばGridViewの表示を更新してくれる。つまり再度、BaseAdapter#getView() が呼ばれる。
でもこの notifyDataSetChanged は GUIのスレッドから呼ばないと反応しないので注意。

guiThread.post(new Runnable(){
@Override
public void run() { notifyDataSetChanged(); }
});
※guiThreadは Handlerのインスタンス。
この辺は、javax.swing.JTable のモデル更新と同じ発想でコーディングできそう。

0 件のコメント:

コメントを投稿