首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >移除安卓系统中的ListView项目

移除安卓系统中的ListView项目
EN

Stack Overflow用户
提问于 2010-04-01 14:44:08
回答 11查看 226.8K关注 0票数 62

谁能给我一个示例代码删除所有的ListView项目,并替换为新的项目?

我尝试更换适配器项,但没有成功。我的代码是

代码语言:javascript
复制
populateList(){

 results //populated arraylist with strings

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, results);

 listview.setAdapter(adapter);
 adapter.notifyDataSetChanged();
 listview.setOnItemClickListener(this);

}

// now populating list again

repopulateList(){

 results1 //populated arraylist with strings

 ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, results1);

 listview.setAdapter(adapter1);
 adapter1.notifyDataSetChanged();
 listview.setOnItemClickListener(this);
}

在这里,repopulateList()方法将添加到ListView项,但它不会移除/替换所有ListView项。

EN

回答 11

Stack Overflow用户

发布于 2011-03-18 04:37:33

您将希望从适配器对象中remove()项,然后在适配器上运行notifyDatasetChanged(),任何ListView都将(应该)回收和更新它自己。

下面是一个简短的AlertDialog活动示例:

代码语言:javascript
复制
adapter = new MyListAdapter(this);
    lv = (ListView) findViewById(android.R.id.list);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> a, View v, int position, long id) {
        AlertDialog.Builder adb=new AlertDialog.Builder(MyActivity.this);
        adb.setTitle("Delete?");
        adb.setMessage("Are you sure you want to delete " + position);
        final int positionToRemove = position;
        adb.setNegativeButton("Cancel", null);
        adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                MyDataObject.remove(positionToRemove);
                adapter.notifyDataSetChanged();
            }});
        adb.show();
        }
    });
票数 79
EN

Stack Overflow用户

发布于 2010-11-03 14:51:29

我认为如果你添加下面的代码,它将会工作

代码语言:javascript
复制
listview.invalidateViews();

要删除项目,只需从我们传递给适配器的数组列表中删除该项目,然后执行listview.invalidateViews();

这将刷新列表视图

票数 24
EN

Stack Overflow用户

发布于 2010-04-01 15:51:44

您可以使用

代码语言:javascript
复制
adapter.clear() 

这将删除第一个适配器的所有项,然后您可以设置另一个适配器,或者重用该适配器并将这些项添加到旧适配器。如果您使用

代码语言:javascript
复制
adapter.add()

要将数据添加到列表中,不需要调用notifyDataSetChanged

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2558591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档