清除列表视图内容?

我对 ListView有点意见。在知道 ListView内容有自定义适配器的情况下,如何清除该内容?

edit- 自定义适配器类扩展了 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= v.findViewById(R.id.dexter);
v.setTag(holder);
} else {
holder = v.getTag();
}


holder.text.setText(data[position]);


return v;
}


}
168878 次浏览

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

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

我想您已经向适配器传递了 List 或 Array。如果保留此添加的集合的实例,则可以执行

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

只有当您使用 收藏品实例化适配器并且它是相同的实例时,这才会起作用。

Also, depending on the Adapter you extended, you may not be able to do this. SimpleAdapter is used for static data, thus it can't be updated after creation.

不是所有的适配器都有 清除()方法。 ArrayAdapter ArrayAdapter 有,但是 一个 href = “ http://developer.android.com/intl/fr/reference/android/widget/ListAdapter.html”rel = “ norefrer”> ListAdapter 或者 SimpleAdapter没有

您需要同时从 ArrayAdapter 和 notifyDataSetChanged()调用这两个 clear()

下面是链接 click

只要写下来

listView.setAdapter(null);

这很简单。首先你应该清除你的集合,然后像这样清除列表:

 yourCollection.clear();
setListAdapter(null);

对于 listview 中的重复条目有一个解决方案。 你必须在你的活动中声明 onBackPress()方法,并写下下面给出的高亮代码:

@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
**


attendence_webdata.clear(); list.setAdapter(null);
--------------------------------------------------


**
}

Simple its works me:)

YourArrayList_Object.clear();

只需将代码 ListView.Items.Clear();放在您的方法上

至于 Android 版本的 M 和 N,下面的工作对我来说是正确的方法。清空 ListView 或者将 Adapter 设置为 null 不是正确的方法,而且会导致 null 指针问题、 ListView 无效和/或应用程序崩溃。

简单来说:

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

例如,首先完全清除列表,然后让适配器知道这个更改。Android 将用一个空列表来正确地更新 UI。在我的例子中,我的列表是一个数组列表。

如果您从另一个线程执行此操作,请在 UI 线程上运行此代码:

    runOnUiThread(mRunnable);

MRunnable 的位置:

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