Chris1990
Chris1990

Reputation: 31

Android ListView Removing Item on click

I am trying to remove an item from the list when I click on the selected item but I get an error on logcat saying that the removeViewAt method is not supported on AddapterView. Any idea of what I could use here in order to achieve this ?

Many thanks. Here is my code.

 listView.setOnItemClickListener(new OnItemClickListener()
        {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int  position, long id)
        {
            listView.removeViewAt(position);
            listView.invalidateViews();

        }
    });
}

Upvotes: 0

Views: 222

Answers (3)

John smith
John smith

Reputation: 1785

you are populate list with any array or collection item Then remove item at position of clicked position. And now notify adapter by calling adapter.notifydatasetchange(); Enjoy your code

Upvotes: 0

OBX
OBX

Reputation: 6114

This fades away the clicked item using Animation, Requires API level 16

   private List<String> myList;
    File file;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView listView = (ListView) findViewById(R.id.listerX);
        myList = new ArrayList<String>();

        File directory = Environment.getExternalStorageDirectory();
        file = new File( directory + "/myAppCache/" );
        File list[] = file.listFiles();

        for( int i=0; i< list.length; i++)
        {
            myList.add( list[i].getName() );
        }
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, final View view,
                                    int position, long id) {
                final String item = (String) parent.getItemAtPosition(position);
                view.animate().setDuration(2000).alpha(0)
                        .withEndAction(new Runnable() {
                            @Override
                            public void run()
                            {
                                Toast.makeText(getApplicationContext(), ""+item,
                                        Toast.LENGTH_LONG).show();


                            }
                        });
            }
        });

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

        listView.setAdapter(adapter); //Set all the file in the list.
    }

Upvotes: 0

kalidoss rajendran
kalidoss rajendran

Reputation: 640

Try this:

ArrayList<String> arrlist=new ArrayList<String>();
arrlist.add("A");
arrlist.add("B");
arrlist.add("C");
arrlist.add("D");

ListView listView = (ListView) findViewById(R.id.mylist);
String[] items = { "Milk", "Butter", "Yogurt", "Toothpaste", "Ice Cream" };

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

listView.setOnItemClickListener(new OnItemClickListener()
    {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int  position, long id)
    {
        items.remove(position);
        adapter.notifyDataSetChanged();
    }
 });
}

Upvotes: 1

Related Questions