ボタンクリックによって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 件のコメント:
コメントを投稿