我正在扩展BaseAdapter以创建自定义listview行。我有上下文菜单,每当用户按住该行时就会打开,并提示他是否要删除它。但是,如何删除行?哈希图仅是测试数据。
private MyListAdapter myListAdapter;
private ArrayList<HashMap<String, String>> items;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
items = new ArrayList<HashMap<String,String>>();
HashMap<String, String> map1 = new HashMap<String, String>();
map1.put("date", "10/09/2011");
map1.put("distance", "309 km");
map1.put("duration", "1t 45min");
items.add(map1);
myListAdapter = new MyListAdapter(this, items);
setListAdapter(myListAdapter);
getListView().setOnCreateContextMenuListener(this);
}
private class MyListAdapter extends BaseAdapter {
private Context context;
private ArrayList<HashMap<String, String>> items;
public MyListAdapter(Context context, ArrayList<HashMap<String, String>> items) {
this.context = context;
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.row_log, null);
}
TextView rowLogOverview = (TextView) view.findViewById(R.id.rowLogOverview);
HashMap<String, String> item = items.get(position);
rowLogOverview.setText(item.get("date"));
return view;
}
}
您不要从适配器中删除!您从项目中删除!适配器位于您的商品和视图之间。您可以从视图中获得职位,并根据职位可以删除项目。然后,适配器将刷新您的视图。
那意味着你需要做这样的事情
items.remove(position);
adapter.notifyDataSetChanged()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句