清除listview内容?

Moh*_*lah 73 android listview adapter

我有点问题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;
    }

}
Run Code Online (Sandbox Code Playgroud)

mik*_*enz 194

简单写一下

listView.setAdapter(null);
Run Code Online (Sandbox Code Playgroud)

  • beshkenadze - 你让我全都退出了`Adapter.clear()`...太糟糕了*不存在*!:/ (23认同)
  • 更好地使用Adapter.clear()和Adapter.notifyDataSetChanged() (17认同)
  • 如果有人仍然使用Android 1.6,它将在设置null或0长度适配器时崩溃. (5认同)
  • 这很棒.谁会使用android 1.6仍然= P谢谢迈克 (2认同)

Mar*_*ues 54

我猜你把List或数组传递给了适配器.如果你保留这个添加的集合的实例,你可以做一个

collection.clear();
listview.getAdapter().notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

只有当您使用集合实例化适配器并且它是相同的实例时,这才会起作用.

此外,根据您扩展的适配器,您可能无法执行此操作.SimpleAdapter用于静态数据,因此在创建后无法更新.

PS.并非所有Adapters都有clear()方法.ArrayAdapter可以,但ListAdapterSimpleAdapter没有


zhe*_*eek 7

这很简单.首先你应该清除你的收藏,并在清除列表后像这样的代码:

 yourCollection.clear();
 setListAdapter(null);
Run Code Online (Sandbox Code Playgroud)