Skip to content Skip to sidebar Skip to footer

How To Do Multiselect Functionality On Grid View Items On Tap?

I have made grid view in which I have to do multiple selection of items.But I dont want long tap functionality.I simply want that on single tap the multiple items can be selected.G

Solution 1:

This is a rough solution of what you need to do:

1) Maintain a list which will contain the positions of currently selected items.

private ArrayList<Integer> mSelected = new ArrayList<Integer>();

When you click on item (select item), add it to the list. When you click on item again (deselect item), remove from the list.

publicvoidonItemSelect(AdapterView<?> parent, View v, int pos, long id) {
        Integer position = new Integer(pos);
        if(mSelected.contains(position)) {
            mSelected.remove(position); // remove item from list// update view (v) state here// eg: remove highlight
        }
        else {
            mSelected.add(position); // add item to list// update view (v) state here// eg: add highlight
        } 
    }

2) You have to update the view, to show if item is selected or not, I will add code (+comments) on where to do that.

3) In the end, the list will contain all items which have been selected.

Here is the code which shows you where to place the above code.

Code:

publicclassFragmentOrderextendsFragment {

    @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        //View view = inflater.inflate(R.layout.g, null);Viewview= inflater.inflate(R.layout.gridview,null);
        finalGridViewlistView= (GridView) view.findViewById(R.id.mainGrid);
        finalOrderGridViewAdapteradapter=newOrderGridViewAdapter(MainActivity.this)
        listView.setAdapter(adapter);
        //int setSelected = 0;
        listView.setSelected(true);

        listView.setOnItemClickListener(newOnItemClickListener() {
            @OverridepublicvoidonItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                adapter.onItemSelect(arg0, arg1, arg2, arg3);
            }
        });
        return view;
    }
}

Adapter:

publicclassOrderGridViewAdapterextendsBaseAdapter{
    private Context MContext;
    private ArrayList<Integer> mSelected = newArrayList<Integer>();

    publicOrderGridViewAdapter(Context C){
        MContext = C;
    }


    @OverridepublicintgetCount() {
        return mThumbIds.length;
    }

    @Overridepublic Object getItem(int position) {
        returnnull;
    }

    @OverridepubliclonggetItemId(int position) {
        // TODO Auto-generated method stubreturn0;
    }

    publicvoidonItemSelect(AdapterView<?> parent, View v, int pos, long id) {
        Integerposition=newInteger(pos);
        if(mSelected.contains(position)) {
            mSelected.remove(position);
            // update view (v) state here// eg: remove highlight
        }
        else {
            mSelected.add(position);
            // update view (v) state here// eg: add highlight
        } 
    }

    @Overridepublic View getView(int position, View convertView, ViewGroup parent) {


        View myView;


        LayoutInflaterinflater= (LayoutInflater)MContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);           
        myView = inflater.inflate(R.layout.grid_items_ontap, null);


        // Add The Image!!!           ImageViewiv= (ImageView)myView.findViewById(R.id.grid_item_image_OnTap);
        iv.setImageResource(mThumbIds[position]);


        // Add The Text!!!TextViewtv= (TextView)myView.findViewById(R.id.grid_item_text_onTap);
        tv.setText(names[position] );

        // Set view highlight here, based on if it is selected or not.. if(mSelected.contains(position)) { 
            // update view (v) state here// eg: add highlight
        }
        else {
            // update view (v) state here// eg: remove highlight
        }


        return myView;
    }


    private Integer[] mThumbIds = {
            R.drawable.car, R.drawable.car,
            R.drawable.car, R.drawable.car,
            R.drawable.car,R.drawable.car,R.drawable.car,R.drawable.car, R.drawable.car,
            R.drawable.car, R.drawable.car,
            R.drawable.car,R.drawable.car,R.drawable.car
    };

    private String[] names={"ab","cd","ef","gh","ij","kl","mn","","","","","","",""};
 }

Update: To update the view, you should read about how to change properties of the view programatically. For example, if you want to change the background color:

v.setBackgroundColor(Color.parseColor("#000000")); // change to black

Post a Comment for "How To Do Multiselect Functionality On Grid View Items On Tap?"