清除listview内容?

我有一个listview的小问题。 我如何清除列表视图内容,知道它有一个自定义的适配器?

编辑:自定义适配器类扩展BaseAdapter,它看起来像这样:

import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class MyAdapter extends BaseAdapter { private Activity activity; private String[] data; private static LayoutInflater inflater=null; public MyAdapter(Activity _a, String[] _str) { activity = _a; data = _str; inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public static class ViewHolder{ public TextView text; } @Override public int getCount() { return data.length; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View view, ViewGroup parent) { View v = view; ViewHolder holder; if(v == null) { v = inflater.inflate(R.layout.rowa, null); holder=new ViewHolder(); holder.text=(TextView)v.findViewById(R.id.dexter); v.setTag(holder); }else{ holder=(ViewHolder)v.getTag(); } holder.text.setText(data[position]); return v; } } 

简单写一下

 listView.setAdapter(null); 

我想你传递一个列表或数组到适配器。 如果你保留这个添加的集合的实例,你可以做一个

 collection.clear(); listview.getAdapter().notifyDataSetChanged(); 

这只会在你使用集合实例化适配器并且它是相同的实例时才起作用。

另外,根据您扩展的适配器,您可能无法做到这一点。 SimpleAdapter用于静态数据,因此创build后无法更新。

PS。 并非所有适配器都有clear()方法。 ArrayAdapter ,但ListAdapterSimpleAdapter

这很简单。首先,你应该清除你的collections,并清除列表后,像这样的代码:

  yourCollection.clear(); setListAdapter(null); 

太晚了。 简单它的作品我:)

YourArrayList_Object.clear();

从您的自定义适配器中删除您的项目并调用notifyDataSetChanged()

有一个在列表视图中重复条目的解决scheme。 你必须在你的活动中声明onBackPress() – 方法,并记下下面给出的高亮代码:

 @Override public void onBackPressed() { // TODO Auto-generated method stub super.onBackPressed(); ** attendence_webdata.clear(); list.setAdapter(null); -------------------------------------------------- ** } 

只要把代码ListView.Items.Clear(); 在你的方法上

至于Android版本M和N,下面的作品对我来说是正确的做法。 清空ListView或将适配器设置为空不是正确的方法,并会导致空指针问题,无效的ListView和/或应用程序崩溃。

简单地做:

  mList.clear(); mAdapter.notifyDataSetChanged(); 

即首先完全清除列表,然后让适配器知道这个更改。 Android会照顾正确地更新UI列表。 就我而言,我的列表是一个ArrayList。

如果您正在从不同的线程执行此操作,请在UI线程上运行以下代码:

  runOnUiThread(mRunnable); 

mRunnable将在哪里:

  Runnable mRunnable = new Runnable() { public void run() { mList.clear(); mAdapter.notifyDataSetChanged(); } };; 

你需要从ArrayAdapter和notifyDataSetChanged()都调用clear()

以下是链接点击

从您的自定义适配器调用clear()方法。