Listの変化を ListView に反映させたい時、BaseAdapter の notifyDataSetChanged() を
呼ぶわけだが、ListView の行のクリックや長押しでの実行は簡単だが、
他のイベント、ListView とは別に配置した Button クリックで呼ぶ場合など、
ちょっと工夫が必要である。
ListView の getAdapter() を使うのである。
List<E> list; // グローバル変数
:
:
final LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final ListView listview = (ListView)findViewById(R.id.listView);
listview.setAdapter(new BaseAdapter(){
@Override
public View getView(int position,View convertView,ViewGroup parent){
View view = convertView==null ? layoutInflater.inflate(android.R.layout.simple_list_item_1,null) : convertView;
E e = list.get(position);
if (e != null){
TextView text1 = (TextView)view.findViewById(android.R.id.text1);
text1.setText(e.toString());
}
return view;
}
@Override
public long getItemId(int position){
return position;
}
@Override
public Object getItem(int location){
return list.get(location);
}
@Override
public int getCount(){
return list.size();
}
});
*1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
// List を変更
*2.notifyDataSetChanged();
}
});