Lokesh GP Loki
Lokesh GP Loki

Reputation: 101

How to get gridview multiple positions and store into array variable

Now I am displaying images in grid-view, it working fine. In that grid-view i am going to select few images, i want store selected multiple images position in array variable (example: if i select position 1, 4 ,10. i want that particular position id and i want to store it array like 1,4,10,15,). I will put my activity and adapter code below. Thank you in advance.

Activity

public class EM_event_total_userSeats extends AppCompatActivity implements RestCallback,AdapterView.OnItemClickListener {

String user_id,first_name,last_name,name,emailid,contact_no,gender1,date_of_birth,country_id,postal_code,rolename,profession_response,Street_Address,City,photo;
GridView GridUserSeats;
;
TextView textView1,textView2,Tvposition;

ImageView Ivseats;

public static EM_event_total_userseatsAdapter adapter;
ArrayList<EM_event_total_UserSeatsModel> EMeventuserseatslist;
View savedView;
View previous = null;
String event_id = "EVEPRI62";

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

    GridUserSeats.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                                int position, long id) {

            String a = String.valueOf(position);

            Toast.makeText(EM_event_total_userSeats.this, a + "#Selected", Toast.LENGTH_SHORT).show();
            v.setBackgroundColor(Color.GREEN);
            adapter.notifyDataSetChanged();
        }
    });

}

private void initviews() {

    GridUserSeats=(GridView)findViewById(R.id.GridUserSeats);
    GridUserSeats.setOnItemClickListener(this);



    textView1=(TextView) findViewById(R.id.textView1);

   // textView2=(TextView) findViewById(R.id.textView2);

    Intent intent = getIntent();

    first_name = intent.getStringExtra("first_name");
    last_name = intent.getStringExtra("last_name");

}

private void callSeatsApi() {

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("events", event_id);
    RestService.getInstance(EM_event_total_userSeats.this).getUserSeats(map, new MyCallback<ArrayList<EM_event_total_UserSeatsModel>>(EM_event_total_userSeats.this,
            EM_event_total_userSeats.this, true, "Finding seats....", GlobalVariables.SERVICE_MODE.EM_SEATS));
}

@Override
public void onFailure(Call call, Throwable t, GlobalVariables.SERVICE_MODE mode) {

}

@Override
public void onSuccess(Response response, GlobalVariables.SERVICE_MODE mode)
{
    switch (mode)
    {
        case EM_SEATS:
            EMeventuserseatslist = (ArrayList<EM_event_total_UserSeatsModel>)response.body();
            adapter = new EM_event_total_userseatsAdapter(EMeventuserseatslist, getApplicationContext());
            GridUserSeats.setAdapter(adapter);
            break;
    }

}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


}

}

Adapter

    import android.content.Context;
    import android.content.Intent;
     import android.support.annotation.NonNull;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;
    import com.squareup.picasso.Picasso;
    import java.util.ArrayList;
    import java.util.List;
    import cfirst.live.com.R;
    import cfirst.live.com.model.BasketModel;
    import cfirst.live.com.model.EM_event_total_UserSeatsModel;


public class EM_event_total_userseatsAdapter extends ArrayAdapter<EM_event_total_UserSeatsModel> implements View.OnClickListener {
ArrayList<EM_event_total_UserSeatsModel> dataSet;
public ArrayList<EM_event_total_UserSeatsModel> EMeventuserseatslist = new ArrayList<EM_event_total_UserSeatsModel>();
Context mContext;
ViewHolder holder;
String user_seats;
private int[] tagCollection;
private String[] mobileValues;
private  String[] mobileValuesD;

private static class ViewHolder {
    TextView TvEmUserSeats;
    ImageView IvUsreSeats,available,selctedimag;

}
private String[] strings;
List<Integer> selectedPositions = new ArrayList<>();


public EM_event_total_userseatsAdapter(ArrayList<EM_event_total_UserSeatsModel> data, Context context) {
    super(context, R.layout.list_em_get_seats, data);
    this.dataSet = data;
    this.mContext=context;

}
public int getTagFromPosition(int position) {
    return tagCollection[position];
}

@Override
public void onClick(View v) {
    int position=(Integer) v.getTag();
    Object object= getItem(tagCollection[position]);

    EM_event_total_UserSeatsModel dataModel=(EM_event_total_UserSeatsModel) object;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    // Get the data item for this position
    EM_event_total_UserSeatsModel dataModel = getItem(position);
    // Check if an existing view is being reused, otherwise inflate the view
    ViewHolder viewHolder; // view lookup cache stored in tag

    final View result;


    if (convertView == null) {

        viewHolder = new ViewHolder();
        LayoutInflater inflater = LayoutInflater.from(getContext());
        convertView = inflater.inflate(R.layout.list_em_get_seats, parent, false);


        viewHolder.TvEmUserSeats = (TextView) convertView.findViewById(R.id.TvEmUserSeats);
        viewHolder.IvUsreSeats = (ImageView) convertView.findViewById(R.id.IvUsreSeats);


        result=convertView;

        convertView.setTag(viewHolder);
      } else {
        viewHolder = (ViewHolder) convertView.getTag();
        result=convertView;
      }



    String blue_available = "seat3.png";
    String red_booked = "seat1.png";

    String get_seat = dataModel.getBookedStatus();
    viewHolder.TvEmUserSeats.setText(dataModel.getSeatName());
    if(Integer.parseInt(get_seat) == 1){
        Picasso.with(mContext).load("imageurl + red_booked).into(viewHolder.IvUsreSeats);

    }else
    {

        Picasso.with(mContext).load("imageurl + blue_available).into(viewHolder.IvUsreSeats);

    }      
    return convertView;
}
}

Upvotes: 0

Views: 1110

Answers (2)

Umer Khan
Umer Khan

Reputation: 496

It's simple. You can use SparseBooleanArray for this purpose. Just add the following methods as is in your adapter:

public void toggleSelection(int item) {
    if (selectedItems.get(item, false)) {
        selectedItems.delete(item);
    } else {
        selectedItems.put(item, true);
    }

    notifyDataSetChanged();
}

public void setSelectedItems(List<Object> objects) {
    if (objects != null) {
        for (Object object : objects) {
            toggleSelection(object.getId());
        }

        notifyDataSetChanged();
    }
}

public void clearSelections() {
    selectedItems.clear();
    notifyDataSetChanged();
}

public int getSelectedItemCount() {
    return selectedItems.size();
}

public List<Integer> getSelectedItems() {
    List<Integer> items =
            new ArrayList<Integer>(selectedItems.size());
    for (int i = 0; i < selectedItems.size(); i++) {
        items.add(selectedItems.keyAt(i));
    }
    return items;
}

Use the set selection method to store the selected status of your item. Don't forget to initialize SparseBooleanArray in your constructor.

SparseBooleanArray SparseBooleanArray = new SparseBooleanArray();

After that, use toggleSelection(position); to change the selected status of an item, then after performing selections, call getSelectedItem() to get the selected items in an array.

Upvotes: 1

Adnan tariq
Adnan tariq

Reputation: 1

// create an Arraylist and add the selected position in a list

List <int> selectedArray = new ArrayList<>();

  @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {



int click = (int) parent.getItemAtPosition(position);

selectedArray.add(click);
}

Upvotes: 0

Related Questions