Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使按钮选择我的recyclerView中的所有复选框?_Java_Android_Android Recyclerview - Fatal编程技术网

Java 如何使按钮选择我的recyclerView中的所有复选框?

Java 如何使按钮选择我的recyclerView中的所有复选框?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我的代码的结果是,只有在我向下滚动通过recyclerView中的复选框之后,所有复选框才会被选中-当我向上滚动时,它们被选中 我如何在单击按钮后立即检查它们 在我的活动中,我有: private void publicButton() { publicContacts.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

我的代码的结果是,只有在我向下滚动通过recyclerView中的复选框之后,所有复选框才会被选中-当我向上滚动时,它们被选中

我如何在单击按钮后立即检查它们

在我的活动中,我有:

    private void publicButton() {

        publicContacts.setOnClickListener(new View.OnClickListener() {

 @Override
        public void onClick(View v) {

            //loop through the contacts
            int count = PopulistoContactsAdapter.theContactsList.size();

            for (int i = 0; i < count; i++) {
                PopulistoContactsAdapter.theContactsList.get(i).setSelected(true);
                }
        }
    });
}

适配器中的onClick按计划为各个复选框工作;他们的状态得到了保护。当我试图用活动中的按钮选择所有选项时,问题就出现了

到目前为止,最简单的答案是,在进行所有选定的调用后,只需在适配器上调用notifyDataSetChanged

从您的代码中,我无法判断PopulistoContactsAdapter是一个适配器实例,还是PopulistoContactsAdapter.theContactsList是一个静态变量。。。您需要一个适配器实例来调用notifyDataSetChanged。如果您只有对RecyclerView的引用,则可以调用myRecyclerView.getAdapter.notifyDataSetChanged

@Override
    public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {
        //bind the views into the ViewHolder
        //selectPhoneContact is an instance of the SelectPhoneContact class.
        //We will assign each row of the recyclerview to contain details of selectPhoneContact:

        //The number of rows will match the number of phone contacts
        final SelectPhoneContact selectPhoneContact = theContactsList.get(position);

        //if the row is a matching contact
        if (viewHolder.getItemViewType() == 1)

        {
            //in the title textbox in the row, put the corresponding name etc...
            ((MatchingContact) viewHolder).title.setText(selectPhoneContact.getName());
            ((MatchingContact) viewHolder).phone.setText(selectPhoneContact.getPhone());
            //((MatchingContact) viewHolder).check.setText("Cheeckbox" + position);
            ((MatchingContact) viewHolder).check.setChecked(theContactsList.get(position).isSelected);
            ((MatchingContact) viewHolder).check.setTag(position);

            ((MatchingContact) viewHolder).check.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    //pos is the row number that the clicked checkbox exists in
                    Integer pos = (Integer) ((MatchingContact) viewHolder).check.getTag();

                    Toast.makeText(context_type, theContactsList.get(pos).getPhone() + " clicked!", Toast.LENGTH_SHORT).show();

                    if (theContactsList.get(pos).getSelected()) {
                        theContactsList.get(pos).setSelected(false);
                    } else {
                        theContactsList.get(pos).setSelected(true);
                    }
                }
            });

            }
    }