2012年11月4日日曜日

ListViewのデータを動的に変更

ボタンクリックによってListViewのデータを変更させたい場合、

アダプタに渡したデータを更新したすぐあとに、

notifyDataSetChanged()を呼ぶのを忘れないように。

以下サンプル

ListACtivitySamle.java

public class ListACtivitySamle extends ListActivity {

/** アダプタ */
SampleAdapter adapter;

/** アダプタへ渡すリスト */
List<User> users;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

users = makeUsers();//ユーザー情報取得
adapter = new SampleAdapter(this, users);
setListAdapter(adapter);

}

public void addClickMethod(View v ) {

User user = new User();
user.name = "太郎";
user.mail = "taro@taro.com";
user.phone = "090-1111-2222";

adapter.addList(user);
    //アダプタに対してデータが変更したことを知らせる
adapter.notifyDataSetChanged();

}

・・・・・
}
ユーザー情報にデータを追加したあと、

notifyDataSetChanged()を呼び出している。



SampleAdapter.java

public class SampleAdapter extends BaseAdapter {

private Context ctx;

private List<User> users;

public SampleAdapter(Context cotext, List<User> users) {
this.ctx = cotext;
this.users = users;
}

・・・・
public void addList(User user) {
users.add(user);
}
・・・・・・
}
アダプタクラスは特筆すべき点はなし。

0 件のコメント:

コメントを投稿