Java 当我的recyclerview中的所有复选框都未选中时,如何显示toast?

Java 当我的recyclerview中的所有复选框都未选中时,如何显示toast?,java,android,checkbox,android-recyclerview,Java,Android,Checkbox,Android Recyclerview,我能得到的最接近的方法是在每个复选框被取消选中后显示土司,但我只想在它们全部被取消选中后显示土司。在myonBindViewHolder中,我有: ((MatchingContact) viewHolder).check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { // ((MatchingContact) viewHolder).check.setOnClickLis

我能得到的最接近的方法是在每个
复选框
被取消选中后显示
土司
,但我只想在它们全部被取消选中后显示
土司
。在my
onBindViewHolder
中,我有:

    ((MatchingContact) viewHolder).check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        // ((MatchingContact) viewHolder).check.setOnClickListener(new CompoundButton.OnClickListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

            if (isChecked==false) {
                Toast.makeText(context_type, "all unchecked!", Toast.LENGTH_SHORT).show();


            }

        }
    });
这是我的活动NewContact.java,代码(在下面的评论中请求之后):

    public class NewContact extends AppCompatActivity  {

        //in this JSONArray, checkedContacts, we will be storing each checkedContact JSON Object
        //Then we're going to post it to our NewContact.php file
        JSONArray checkedContacts = new JSONArray();

        Button phoneContacts;
        CheckBox mcheckbox;

        //thse are the fields in the xml
        private EditText categoryname;
        private EditText namename;
        private EditText phonename;
        private EditText addressname;
        private EditText commentname;

        int public_or_private;

        // ArrayList called selectPhoneContacts that will contain SelectPhoneContact info
        ArrayList<SelectPhoneContact> selectPhoneContacts;

        ArrayList<String> allPhonesofContacts;
        ArrayList<String> allNamesofContacts;
        ArrayList<String> MatchingContactsAsArrayList;
        String phoneNoofUserCheck;
        public String phoneNumberofContact;
        String phoneNameofContact;

        //For the recycler view, containing the phone contacts
        RecyclerView recyclerView;
        PopulistoContactsAdapter adapter;

        int check_counter = 0;

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

            PopulistoContactsAdapter adapter = new PopulistoContactsAdapter(selectPhoneContacts, NewContact.this);

            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);

            //we are fetching details for the recyclerview - the name, numbers, matching contacts...
            LoadContact loadContact = new LoadContact();
            loadContact.execute();

            //selectPhoneContacts is an empty array list that will hold our SelectPhoneContact info
            selectPhoneContacts = new ArrayList<SelectPhoneContact>();

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

            //cast an EditText for each of the field ids in activity_new_contactact.xml
            categoryname = (EditText) findViewById(R.id.textViewCategory);
            namename = (EditText) findViewById(R.id.textViewName);
            phonename = (EditText) findViewById(R.id.textViewPhone);
            addressname = (EditText) findViewById(R.id.textViewAddress);
            commentname = (EditText) findViewById(R.id.textViewComment);

            phoneContacts = (Button) findViewById(R.id.btnPhoneContacts);

            phoneContactsButton();
            checkboxnull();

            public_or_private = 1;

        }

        // Load data in background
        class LoadContact extends AsyncTask<Void, Void, Void> {
            @Override
            protected void onPreExecute() {

                super.onPreExecute();
            }


            @Override
            protected Void doInBackground(Void... voids) {

                //code here to get allPhonesofContacts
                allPhonesofContacts = gson.fromJson(json, type);

                //code here to get allNamesofContacts
                allNamesofContacts = gson.fromJson(jsonNames, type);
                System.out.println("NewContact: allNamesofContacts :" + allNamesofContacts);

                //code here to get MatchingContactsAsArrayList 
                MatchingContactsAsArrayList = gsonMatchingContactsAsArrayList.fromJson(jsonMatchingContactsAsArrayList, type1);
                System.out.println("SelectPhoneContactAdapter MatchingContactsAsArrayList :" + MatchingContactsAsArrayList);

                //for every value in the allPhonesofContacts array list, call it phoneNumberofContact
                for (int i = 0; i < allPhonesofContacts.size(); i++) {

                    phoneNumberofContact = allPhonesofContacts.get(i);
                    phoneNameofContact = allNamesofContacts.get(i);

                    SelectPhoneContact selectContact = new SelectPhoneContact();

                    //if a phone number is in our array of matching contacts
                    if (MatchingContactsAsArrayList.contains(phoneNumberofContact))

                    {   //add the selectContacts to the selectPhoneContacts array
                        // insert the contact at the beginning of the listview
                        selectPhoneContacts.add(0, selectContact);

                        //In SelectContact class, so getItemViewType will know which layout to show
                        selectContact.setType_row("1");


                    } else {
                        // insert it at the end (default)
                        selectPhoneContacts.add(selectContact);
                        selectContact.setType_row("2");


                    }

                    selectContact.setName(phoneNameofContact);
                    selectContact.setPhone(phoneNumberofContact);

                }

                return null;

            }

            @Override
            protected void onPostExecute(Void aVoid) {
                super.onPostExecute(aVoid);

                PopulistoContactsAdapter adapter = new PopulistoContactsAdapter(selectPhoneContacts, NewContact.this);

                recyclerView.setAdapter(adapter);
                recyclerView.setLayoutManager((new LinearLayoutManager(NewContact.this)));

  adapter.notifyDataSetChanged();


            }
        }


        @Override
        protected void onResume() {
            super.onResume();

        }

        //for the Public Contacts button
        private void phoneContactsButton() {

            phoneContacts.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    PopulistoContactsAdapter adapter = new PopulistoContactsAdapter(selectPhoneContacts, NewContact.this);

                    recyclerView.setAdapter(adapter);
                    // recyclerView.setLayoutManager((new LinearLayoutManager(NewContact.this)));

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

                    for (int i = 0; i < count; i++) {

                        //for  contacts that are checked (they can only be matching contacts)...
                        //PopulistoContactsAdapter.theContactsList.get(i).isSelected=true;
                        PopulistoContactsAdapter.theContactsList.get(i).setSelected(true);


                        //we need to notify the recyclerview that changes may have been made
                        adapter.notifyDataSetChanged();
                    }
                }


            });

        }

        private void checkboxnull() {


            //adapter.setOnClickListener(new PopulistoContactsAdapter.OnClickListener() {
             PopulistoContactsAdapter adapter = new PopulistoContactsAdapter(selectPhoneContacts, NewContact.this);


                adapter.SetOnCheckBoxClickListener(new PopulistoContactsAdapter.OnCheckBoxClickListener() {


                @Override
                public void onCheckBoxClick(boolean isChecked) {
                    if (isChecked)
                        ++check_counter;
                    else
                        --check_counter;


                    if (check_counter <= 0)
                        Toast.makeText(NewContact.this, "all unchecked!", Toast.LENGTH_SHORT).show();


                }


            });
        }


        //create a method in your first activity, (where the button color should change):
        public void changeColorInFirstActivity(){
           // Button btnA = (Button) findViewById(R.id.btnPhoneContacts);
            phoneContacts.setBackgroundColor(Color.RED);
        }
}
public class PopulistoContactsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder > {
        private Context mContext;
        //make a List containing info about SelectPhoneContact objects
        public static List<SelectPhoneContact> theContactsList;
        Context context_type;
        private OnCheckBoxClickListener onCheckBoxClickListener;

        public class MatchingContact extends RecyclerView.ViewHolder {

            //In each recycler_blueprint show the items you want to have appearing
            public TextView title, phone;
            public CheckBox check;
            public Button invite;

            public MatchingContact(final View itemView) {
                super(itemView);
                //title is cast to the name id, in recycler_blueprint,
                //phone is cast to the id called no etc
                title = (TextView) itemView.findViewById(R.id.name);
                phone = (TextView) itemView.findViewById(R.id.no);
                invite = (Button) itemView.findViewById(R.id.btnInvite);
                check = (CheckBox) itemView.findViewById(R.id.checkBoxContact);

            }

        }


        public class nonMatchingContact extends RecyclerView.ViewHolder {

            //In each recycler_blueprint show the items you want to have appearing
            public TextView title, phone;
            public CheckBox check;
            public Button invite;

            public nonMatchingContact(final View itemView) {
                super(itemView);
                //title is cast to the name id, in recycler_blueprint,
                //phone is cast to the id called no etc
                title = (TextView) itemView.findViewById(R.id.name);
                phone = (TextView) itemView.findViewById(R.id.no);
                invite = (Button) itemView.findViewById(R.id.btnInvite);
                check = (CheckBox) itemView.findViewById(R.id.checkBoxContact);

            }

        }

        @Override
        public int getItemViewType(int position) {
            //for each row in recyclerview, get the getType_row, set in NewContact.java
            return Integer.parseInt(theContactsList.get(position).getType_row());
        }

        public PopulistoContactsAdapter(List<SelectPhoneContact> selectPhoneContacts, Context context) {
            //selectPhoneContacts = new ArrayList<SelectPhoneContact>();


            theContactsList = selectPhoneContacts;


            this.mContext = context;
           // whichactivity = activity;
            context_type = context;


        }

        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

            View itemView;

            //if getType_row is 1...
            if (viewType == 1)


            {


                Context context = parent.getContext();
                LayoutInflater inflater = LayoutInflater.from(context);


                itemView = inflater.inflate(R.layout.recycler_blueprint, parent, false);

                //itemView.setTag();
                return new MatchingContact(itemView);


            } else {


                Context context = parent.getContext();
                LayoutInflater inflater = LayoutInflater.from(context);


                itemView = inflater.inflate(R.layout.recycler_blueprint_non_matching, parent, false);


                return new nonMatchingContact(itemView);


            }


        }


        @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.setChecked(theContactsList.get(position).getSelected());
                ((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();


                        //NEED THIS TO PRESERVE CHECKBOX STATE
                        //because it is onClick, getSelected will always be the same value
                        //false or true, it doesn't matter
                        if (theContactsList.get(pos).getSelected()) {
                            theContactsList.get(pos).setSelected(false);
                            Toast.makeText(context_type, theContactsList.get(pos).getPhone() + " clicked!", Toast.LENGTH_SHORT).show();


                        } else {


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


                        }
                    }
                });


                ((MatchingContact) viewHolder).check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                    // ((MatchingContact) viewHolder).check.setOnClickListener(new CompoundButton.OnClickListener() {
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {


                        onCheckBoxClickListener.onCheckBoxClick(isChecked);


                    }
                });


            }
            else {


                ((nonMatchingContact) viewHolder).title.setText(selectPhoneContact.getName());
                ((nonMatchingContact) viewHolder).phone.setText(selectPhoneContact.getPhone());


            }
        }

        @Override
        public int getItemCount() {


            return theContactsList.size();
        }


        public interface OnCheckBoxClickListener {
            void onCheckBoxClick(boolean ischecked);
        }


        public void SetOnCheckBoxClickListener(final OnCheckBoxClickListener onCheckBoxClickListener) {
            this.onCheckBoxClickListener = onCheckBoxClickListener;
        }


    }
public类NewContact扩展了AppCompative活动{
//在这个JSONArray checkedContacts中,我们将存储每个CheckedContactJSON对象
//然后我们将把它发布到NewContact.php文件中
JSONArray checkedContacts=新的JSONArray();
按钮电话;
复选框mcheckbox;
//这些是xml中的字段
私有EditText类别名称;
私有编辑文本名称;
私有文本电话名;
私有文本地址名;
私有编辑名;
int公共或私人;
//名为selectPhoneContacts的ArrayList将包含SelectPhoneContact信息
ArrayList selectPhoneContacts;
ArrayList allPhonesofContacts;
ArrayList联系人的所有名称;
ArrayList匹配ContactsArrayList;
字符串PhoneNoFuserCheck;
公共字符串phoneNumberofContact;
字符串phoneNameofContact;
//对于recycler视图,包含电话联系人
回收视图回收视图;
接触式适配器;
int check_计数器=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u new\u contact);
PopulistoContactsAdapter=新的PopulistoContactsAdapter(选择PhoneContacts,NewContact.this);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
//我们正在获取recyclerview的详细信息-姓名、号码、匹配的联系人。。。
LoadContact LoadContact=新的LoadContact();
loadContact.execute();
//selectPhoneContacts是一个空数组列表,用于保存SelectPhoneContact信息
选择PhoneContacts=new ArrayList();
recyclerView=(recyclerView)findViewById(R.id.rv);
//为activity_new_contactact.xml中的每个字段ID强制转换EditText
categoryname=(EditText)findViewById(R.id.textViewCategory);
namename=(EditText)findViewById(R.id.textViewName);
phonename=(EditText)findViewById(R.id.textViewPhone);
addressname=(EditText)findViewById(R.id.textViewAddress);
commentname=(EditText)findViewById(R.id.textViewComment);
phoneContacts=(按钮)findViewById(R.id.btnPhoneContacts);
电话联系按钮();
checkboxnull();
公共或私人=1;
}
//在后台加载数据
类LoadContact扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的空位背景(空位…空位){
//在此处编码以获取所有PhoneSofContacts
allPhonesofContacts=gson.fromJson(json,类型);
//在此处编码以获取所有Contacts的名称
allNamesofContacts=gson.fromJson(jsonNames,type);
System.out.println(“新联系人:allNamesofContacts:+allNamesofContacts”);
//在此处编码以获取匹配的ContactsArrayList
MatchingContactsArrayList=gsonMatchingContactsArrayList.fromJson(jsonMatchingContactsArrayList,类型1);
System.out.println(“SelectPhone ContactAdapter MatchingContactsArrayList:+MatchingContactsArrayList”);
//对于allPhonesofContacts数组列表中的每个值,将其称为phoneNumberofContact
对于(int i=0;i//if all the checkboxes are cheked by default
int count = theContactsList.size();
//if all the checkboxes are uncheked by defult
int count = 0;
((MatchingContact) viewHolder).check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() 
{
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    {
        if (!isChecked)
        {
              count--;
        }
        else
        {
              count++;
        }
        if(count<=0)
        {
            //all unchcked
        }

    }
});
private OnCheckBoxClickListener onCheckBoxClickListener;

public interface OnCheckBoxClickListener {
    void onCheckBoxClick(boolean ischecked);
}
public void SetOnCheckBoxClickListener(final OnCheckBoxClickListener onCheckBoxClickListener) {
    this.onCheckBoxClickListener = onCheckBoxClickListener;
}
((MatchingContact) viewHolder).check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    // ((MatchingContact) viewHolder).check.setOnClickListener(new CompoundButton.OnClickListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

        onCheckBoxClickListener.onCheckBoxClick(isChecked);

    }
});
int check_counter = 0;

    mAdapter.SetOnCheckBoxClickListener(new YourAdapterClass.OnCheckBoxClickListener() {
        @Override
        public void onCheckBoxClick(boolean ischecked) {
            if (ischecked)
                ++check_counter;
            else
                --check_counter;

            if (check_counter <= 0)
                Toast.makeText(context, "all unchecked!", Toast.LENGTH_SHORT).show();


        }

    });
    ((MatchingContact) viewHolder).check.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {



        }
    });
                int count = 0;
                int size = theContactsList.size();
                for (int i = 0; i < size; i++) {
                    if (theContactsList.get(i).isSelected) {
                        count++;
                    }
                }
                if(count==0) {
                    Toast.makeText(context_type, "All unchecked!" , Toast.LENGTH_SHORT).show();
                }