Application クラスに項目のリストがあります。
public class MyApp extends Application {
private static ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
//GET AND SET
}
ListViewで使用したいと思います。MyApp リストに 1 つの要素を追加するボタンがあります。
public void addBase(View view){
MyApp.add2List(....); //add to MyApp.list
adapter.notifyDataSetChanged();
}
同じアクティビティで、ListView を設定します。
list=(ListView)findViewById(R.id.list_view);
adapter=new MyListAdapter(this, R.layout.list_item, Session.getList());
list.setAdapter(adapter);
そして、これは私のアダプターです:
public class MyListAdapter extends ArrayAdapter<HashMap<String, String>> {
private Context _context;
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public MyListAdapter(Context context, int resourceId, ArrayList<HashMap<String, String>> items) {
super(context, resourceId, items);
this.data = items;
_context = context;
activity = ((Activity)context);
inflater = activity.getLayoutInflater();
}
public View getView(final int position, View convertView, ViewGroup parent) {
View vi=convertView;
final ArrayList<HashMap<String, String>> list = Session.getList();
if(convertView==null){
vi = inflater.inflate(R.layout.list_item, null);
ImageButton delete = (ImageButton)vi.findViewById(R.id.delete_item);
delete.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
list.remove(position);
notifyDataSetChanged();
}
});
}
return vi;
}
notifyDataSetChanged()メソッドを使用しましたが、機能しません !! リストビューの更新はありません。
アダプターを再度作成しようとすると、追加ボタンが機能します。
adapter=new MyListAdapter(this, R.layout.list_item, Session.getList());
list.setAdapter(adapter);
削除ボタンに対してこれを行うにはどうすればよいですか?
notifyDataSetChanged() メソッドが機能しないのはなぜですか?