当前位置: 首页 > 面试题库 >

如何从自定义基本适配器中删除项目?

乌学博
2023-03-14
问题内容

我正在扩展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()


 类似资料:
  • 自定义适配器视图有问题。我试着在

  • 英文原文:http://emberjs.com/guides/models/customizing-adapters/ 在Ember Data中,处理与后台数据仓库通信的逻辑是通过Adapter来完成的。Ember Data适配器内置了一些关于REST API的假定。如果后台的实现与Ember Data假定的惯例不同,那么通过扩展缺省的适配器可能很容易的实现。 有时因为一些原因需要自定义适配器,例

  • Ember.js适配器指定如何在后端数据存储中保存数据,例如URL格式和REST API标头。 默认的Ember适配器包含一些REST API的内置假设。 这些假设有助于更轻松,更好地构建Web应用程序。 可以使用以下命令创建适配器 - ember generate adapter adapter-name 运行上面的命令时,它将显示以下行 - import DS from 'ember-dat

  • 我有一个从sqlite数据库接收阵列的基本适配器: 并在异步中填充它: 但我不知道如何为每个条目添加图像,请注意,图像位于文件夹中,图像的名称属于每个条目,例如对于条目管理,在/storage/sdcard/pictures/admin_image1中有一个图像。jpg。因此,当我有条目的名称时,我可以将图像绑定到特定条目。 我需要的是如何将图像添加到此适配器,这里我发布了主要活动和适配器代码,抱

  • 当用户点击按钮时,我试图从JList中删除选中的项目。 目前我有这样的东西: 当我单击按钮删除项目时,出现以下错误: 如何修复此错误,以及我的代码是否删除了多个项目?

  • 问题内容: 我看了以下网站: ListView示例 其中描述了如何在使用默认适配器的列表视图中实现搜索功能,并且效果很好。 如何修改它,以便可以将其用于列表视图的自定义适配器? 部分代码为: 问题答案: 您需要覆盖适配器内部的getFilter并返回您创建的新的customFilter对象。看到这个答案: 编辑: