2

In my application there is an option to select different items from a list view . selected items will stored into an array also a background will set to selected items in listview. which works fine.the problem is i want to deselect the items if i previously selected it.also want to remove from it from the array of selected items.i am looking for it for hours.please help me.Thanks in advance.

    list = (ListView) findViewById(R.id.list);
            // list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

            adapter=new LocationListAdapter(mActivity, locationList);

            list.setAdapter(adapter);
            selectedlocations = new String[locationList.size()];

            list.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    // TODO Auto-generated method stub


                    if (selected != null) {

    //                  selected.setBackgroundResource(R.drawable.list_item_bg_pressed);
                    }

                    selected = view;
                    selected.setBackgroundResource(R.drawable.list_item_bg_pressed);

                    selecteditem = position;
                    selectedlocations[position] = locationList.get(selecteditem)
                            .getId();
                    ((LocationListAdapter)list.getAdapter()).toggleSelected(new Integer(position));

                    System.out.println("Selected position:" + selecteditem + ","
                            + selectedlocations[position]);


                }
            });
Noufal M
  • 163
  • 1
  • 4
  • 12

3 Answers3

2

Have you tried this?

myListView.clearChoices();
myAdapter.notifyDataSetChanged();

This will clear all selections you made.

Joel Min
  • 3,387
  • 3
  • 19
  • 38
0
myListView.clearChoices();
myListView.requestLayout();
nguoixanh
  • 199
  • 1
  • 10
0

in your adapter use a list to store selected objects.if it is already exist then remove it.One more thing you can't remove elements from array, so use List.

list = (ListView) findViewById(R.id.list);

            selectedlocations = new ArrayList<String>();

            list.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    // TODO Auto-generated method stub


                    if (selected != null) {

    //                  selected.setBackgroundResource(R.drawable.list_item_bg_pressed);
                    }

                    selected = view;
                    selected.setBackgroundResource(R.drawable.list_item_bg_pressed);

                    selecteditem = position;
                    String item = ""+locationList.get(selecteditem).getId();
                    if(selectedlocations.contains(item)){
                     selectedlocations.remove(item);
                    }else{
                    selectedlocations.add(item);
                    }

                    ((LocationListAdapter)list.getAdapter()).toggleSelected(new Integer(position));

                    System.out.println("Selected position:" + selecteditem + ","
                            + selectedlocations[position]);


                }
            });
SRB Bans
  • 3,096
  • 1
  • 10
  • 21