0

To my listview activity I am getting error unsupportedOperationException in adapterView now I have no Idea on How to modify the array and adapter, reading this says that I have to modify the array list but my activity as a completely different structure please provide me some code that works for deletind items from listview or a solution for my code

public class DirMusic extends Activity {
    ListView listSongs;
    ArrayList<Song> songs;
    File musicFolder;
    LinearLayout songsView;
    SimpleAdapter adapter;

    @Override
    public void onCreate(Bundle state) {
        super.onCreate(state);
        setContentView(R.layout.activity_dir_music);

        // get the list of files and place them in ListView
        listSongs = (ListView) this.findViewById(R.id.listSongs);
        songsView = (LinearLayout) this.findViewById(R.id.songsView);   
        final AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
        alertDialog.setTitle("Confirm Delete...");
        alertDialog.setMessage("Are you sure you want delete this?");

        musicFolder = new File("/storage/extSdCard/MUSIC");
//      musicFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        listSongs.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> view, View item,
                    final int position, long id) {

                // Your method to play here

            }
        });
        bindSongsToListView(musicFolder);
        songsView.setVisibility(View.VISIBLE);  



    listSongs.setOnItemLongClickListener(new OnItemLongClickListener() {

        public boolean onItemLongClick( final AdapterView<?> arg0, View v,
                final int position, long id) {
            // TODO Auto-generated method stub


             AlertDialog.Builder adb=new AlertDialog.Builder(DirMusic.this);
             adb.setTitle("Delete?");
             adb.setMessage("Are you sure you want to delete " + position);
             adb.setNegativeButton("Cancel", null);
             adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
                 public void onClick(DialogInterface dialog, int which) {            

                     listSongs.removeViewAt(position);//you can delete your item here

                     adapter.notifyDataSetChanged();

                 }});
             adb.show();

             return true;

             }
         });

}


and logCat 03-04 10:30:43.652: E/AndroidRuntime(14787): FATAL EXCEPTION: main
03-04 10:30:43.652: E/AndroidRuntime(14787): java.lang.UnsupportedOperationException: removeViewAt(int) is not supported in AdapterView
03-04 10:30:43.652: E/AndroidRuntime(14787):    at android.widget.AdapterView.removeViewAt(AdapterView.java:520)
03-04 10:30:43.652: E/AndroidRuntime(14787):    at com.gimi.dirmusic.DirMusic$2$1.onClick(DirMusic.java:136)
03-04 10:30:43.652: E/AndroidRuntime(14787):    at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:185)
03-04 10:30:43.652: E/AndroidRuntime(14787):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-04 10:30:43.652: E/AndroidRuntime(14787):    at android.os.Looper.loop(Looper.java:137)
03-04 10:30:43.652: E/AndroidRuntime(14787):    at android.app.ActivityThread.main(ActivityThread.java:5419)
03-04 10:30:43.652: E/AndroidRuntime(14787):    at java.lang.reflect.Method.invokeNative(Native Method)
03-04 10:30:43.652: E/AndroidRuntime(14787):    at java.lang.reflect.Method.invoke(Method.java:525)
03-04 10:30:43.652: E/AndroidRuntime(14787):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
03-04 10:30:43.652: E/AndroidRuntime(14787):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
03-04 10:30:43.652: E/AndroidRuntime(14787):    at dalvik.system.NativeStart.main(Native Method)
03-04 10:30:44.913: I/Process(14787): Sending signal. PID: 14787 SIG: 9
Community
  • 1
  • 1
Dritan Berna
  • 171
  • 1
  • 3
  • 12
  • 3
    you should not remove item from ListView, you should remove element from its list, and refresh ListView – mangusta Mar 04 '14 at 10:14
  • Just remove the item from list then adapter.notifydatasetChanged(). getView() is really a mess – Jackie Mar 04 '14 at 10:22

3 Answers3

2

To delete any element of list view you should delete element of array list in adapter. for that you can create a methode removeItem(position) and remove item from array of adapter and then call notifyDatasetChanged().

I hope it will help for you.

Yogendra
  • 4,817
  • 1
  • 28
  • 21
0
ImageAdapter mImageAdapter;
//...
int pos;
// set pos in range 0 to mImageAdapter.getCount()-1
mImageAdapter.itemList.remove(pos);
mImageAdapter.notifyDataSetChanged();
David I
  • 881
  • 6
  • 10
0

For eveyone that has issue that last item doesn't get removed replace

recyclerView.removeViewAt(position)

with

linearLayoutAdapter.removeViewAt(position)

Androidz
  • 261
  • 2
  • 11