lundi 3 octobre 2016

How to select check boxes of recycler view from a pop menu in an activity?

I have a list of contacts with check boxes. Also I have to create a pop up menu onClick of a image on toolbar.

The pop up menu shows select all option.

So onclick of select all I want all check boxes of list to get selected.

Check box I have defined in an adapter.

Adapter:

    public class InviteAdapter extends RecyclerView.Adapter<InviteAdapter.MyViewHolder> {

    private ArrayList<Contact> contactArrayList;
    private Context mContext;

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView name;
        private CheckBox checkBox;

        public MyViewHolder(View view) {
            super(view);
            name = (TextView) view.findViewById(R.id.textContactName);
            checkBox = (CheckBox) view.findViewById(R.id.checkBox);

        }
    }


    public InviteAdapter(Context context, ArrayList<Contact> contactArrayList) {
        this.contactArrayList = contactArrayList;
        this.mContext = context;

    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.invite_contact_item, parent, false);

        return new MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        Contact contact = contactArrayList.get(position);
        holder.name.setText(contact.getmFullName());



    }

    @Override
    public int getItemCount() {
        return contactArrayList.size();
    }

}

Activity:

    public class InviteContactsActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private InviteAdapter adapter;
    private ArrayList<Contact> contactList;
    private ContactTableHelper contactDb;


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


        Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar);
        TextView mTitle = (TextView) findViewById(R.id.toolbar_title);

        mTitle.setText("Invite Contacts");


        if (toolbar != null) {

            toolbar.setTitle("");
            setSupportActionBar(toolbar);

        }
        ImageView back = (ImageView)findViewById(R.id.imageBack);

        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                finish();

            }
        });

        final ImageView selectAll = (ImageView)findViewById(R.id.selectAll);

        selectAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                PopupMenu popup = new PopupMenu(InviteContactsActivity.this,selectAll);

                popup.getMenuInflater().inflate(R.menu.pop_up_menu, popup.getMenu());

                popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    public boolean onMenuItemClick(MenuItem item) {



                        return true;
                    }
                });

                popup.show();
            }
        });


        contactDb = new ContactTableHelper(InviteContactsActivity.this);

        contactList = contactDb.getAllContacts();

        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);

        recyclerView.setHasFixedSize(true);
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(InviteContactsActivity.this);
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
        recyclerView.setItemAnimator(new DefaultItemAnimator());

        adapter = new InviteAdapter(InviteContactsActivity.this, contactList);
        recyclerView.setAdapter(adapter);
    }
}

Thank you..




Aucun commentaire:

Enregistrer un commentaire