Clear listview content?

AndroidListviewAdapter

Android Problem Overview


I have a little problem with ListView. How do I clear a ListView content, knowing that it has a custom adapter?

edit - the custom adapter class extends BaseAdapter, it looks like this:

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;
	}

}

Android Solutions


Solution 1 - Android

Simply write

listView.setAdapter(null);

Solution 2 - Android

I guess you passed a List or an Array to the Adapter. If you keep the instance of this added collection, you can do a

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

this'll work only if you instantiated the adapter with collection and it's the same instance.

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.

PS. not all Adapters have a clear() method. ArrayAdapter does, but ListAdapter or SimpleAdapter don't

Solution 3 - Android

It's simple .First you should clear your collection and after clear list like this code :

 yourCollection.clear();
 setListAdapter(null);

Solution 4 - Android

As of Android versions M and N, following works for me and would be the correct approach. Emptying the ListView or setting the Adapter to null is not the right approach and would lead to null pointer issue, invalid ListView and/or crash of the app.

Simply do:

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

i.e. first you clear the list altogether, and then let the adapter know about this change. Android will take care of correctly updating the UI with an empty list. In my case, my list is an ArrayList.

In case you are doing this operation from a different thread, run this code on the UI thread:

    runOnUiThread(mRunnable);

Where mRunnable would be:

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

Solution 5 - Android

Simple its works me:)

YourArrayList_Object.clear();

Solution 6 - Android

Remove your items from your custom adapter and call notifyDataSetChanged().

Solution 7 - Android

There is a solution for the duplicate entry in listview. You have to declare the onBackPress()-method on your activity and write down the highlight code given below:

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

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

    **
 }

Solution 8 - Android

Just put the code ListView.Items.Clear(); on your method

Solution 9 - Android

Call clear() method from your custom adapter .

Solution 10 - Android

You need to call both clear() from ArrayAdapter and notifyDataSetChanged() both.

Below is link click

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMohamed GallahView Question on Stackoverflow
Solution 1 - AndroidmikepenzView Answer on Stackoverflow
Solution 2 - AndroidMaraguesView Answer on Stackoverflow
Solution 3 - AndroidzheekView Answer on Stackoverflow
Solution 4 - AndroidzeeshanView Answer on Stackoverflow
Solution 5 - AndroidAgilanbuView Answer on Stackoverflow
Solution 6 - AndroidmreicheltView Answer on Stackoverflow
Solution 7 - AndroidArpit PatelView Answer on Stackoverflow
Solution 8 - AndroidCharlesView Answer on Stackoverflow
Solution 9 - AndroidcarlovvView Answer on Stackoverflow
Solution 10 - AndroidHare-KrishnaView Answer on Stackoverflow