How to Handle the checkbox ischecked and unchecked event in android

后端 未结 5 1619
慢半拍i
慢半拍i 2021-01-16 02:11

i am new in android.i make a simple maths apps. i use the check box for select right option but problem is here the answer option is not only one but also two,three means

相关标签:
5条回答
  • 2021-01-16 02:31

    It seems you are having more than one checkbox and you are setting global listener for every checkbox. So, in that case you need to identify the event for specific checkbox also.

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {   
            int id = buttonView.getId();
            if(id == R.id.chk)
            {
              if(chk.isChecked()){
                   forMetchCheckBox.add(String.valueOf(chk.getText()));
                }
               else{
                   forMetchCheckBox.remove(String.valueOf(chk.getText()));
               }
            }
            else if(id == R.id.chk1){
               ....
            }
        }  
    

    and so on, that will make your listener work perfect.

    0 讨论(0)
  • 2021-01-16 02:31

    To Select Maximum 5 Checkbox at one Time or Count selected and unselected checkbox in Custom listview with CheckBox

         package com.test;
    
     import java.util.ArrayList;
     import android.app.Activity;
     import android.app.AlertDialog;
     import android.app.ListActivity;
     import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.KeyEvent;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.CheckBox;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.AdapterView.OnItemClickListener;
    
    
    public class ListViewCheckboxesActivity extends ListActivity {
    
        AlertDialog alertdialog = null;
        int i1, i2, i3 = 0;
        Country rowcheck;
        MyCustomAdapter dataAdapter = null;
        ListView listView = null;
        int k = 1;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.fmain);
    
            // Generate list View from ArrayList
            displayListView();
            checkButtonClick();
    
        }
    
        private void displayListView() {
    
            // Array list of countries Equipments
            ArrayList<Country> rowcheckList = new ArrayList<Country>();
            Country rowcheck = new Country("", "Hex Bolts", false);
            rowcheckList.add(rowcheck);
            rowcheck = new Country("", "Hex Cap Screw", false);
            rowcheckList.add(rowcheck);
            rowcheck = new Country("", "Round Head Bolt", false);
            rowcheckList.add(rowcheck);
            rowcheck = new Country("", "Slotted Head Hex Bolt", false);
            rowcheckList.add(rowcheck);
            rowcheck = new Country("", "Socket Cap Screw", false);
            rowcheckList.add(rowcheck);
            rowcheck = new Country("", "Sockets", false);
            rowcheckList.add(rowcheck);
            rowcheck = new Country("", "Square Head Bolt", false);
            rowcheckList.add(rowcheck);
            rowcheck = new Country("", "Carriage Bolt", false);
            rowcheckList.add(rowcheck);
            rowcheck = new Country("", "Plow Bolt", false);
            rowcheckList.add(rowcheck);
    
            rowcheck = new Country("", "Struts Clamp", false);
            rowcheckList.add(rowcheck);
    
            listView = getListView();
    
            dataAdapter = new MyCustomAdapter(this, R.layout.rowcheck_info,
                    rowcheckList);
    
            // Assign adapter to ListView
            listView.setAdapter(dataAdapter);
    
            listView.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView parent, View view,
                        int position, long id) {
                    // When clicked, show a toast with the TextView text
                    Country rowcheck = (Country) parent.getItemAtPosition(position);
    
                }
    
            });
    
        }
    
        private class MyCustomAdapter extends ArrayAdapter<Country> {
            private ArrayList<Country> rowcheckList;
    
            public MyCustomAdapter(Context context, int textViewResourceId,
                    ArrayList<Country> rowcheckList) {
                super(context, textViewResourceId, rowcheckList);
                this.rowcheckList = new ArrayList<Country>();
                this.rowcheckList.addAll(rowcheckList);
            }
    
            private class ViewHolder {
                TextView code;
                CheckBox name;
            }
    
            @Override
      public View getView(int position, View convertView, ViewGroup parent) {
    
       ViewHolder holder = null;
       Log.v("ConvertView", String.valueOf(position));
    
       if (convertView == null) 
       {
       LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       convertView = vi.inflate(R.layout.rowcheck_info, null);
    
       holder = new ViewHolder();
       holder.code = (TextView) convertView.findViewById(R.id.code);
       holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1);
       convertView.setTag(holder);
    
        holder.name.setOnClickListener( new View.OnClickListener()
        { 
         public void onClick(View v) 
         { 
          CheckBox cb = (CheckBox) v ; 
          Country rowcheck = (Country) cb.getTag(); 
    
          //To check maximum 5 Selection
          if(k>5)
          {
    
              if(!cb.isChecked())
              {
    
    
                      rowcheck.selected=true;
                      System.out.println(k--);
    
    
               }
    
              else
              {
                  System.out.println("if block in-----");
                  cb.setChecked(false);
                  Toast.makeText(getApplicationContext(), "Maximum Selection", Toast.LENGTH_LONG).show();
              }
    
    
          }
    
          else
          {
    
              System.out.println("else block in-----");
    
              if(!cb.isChecked())
              {
    
    
                      rowcheck.selected=true;
                      System.out.println(k--);
    
               }
    
    
              else if(cb.isChecked())
              {
    
    
                         rowcheck.selected=false;
                         System.out.println(k++);
    
    
    
              }
    
          }
    
    
    
    
    
         Toast.makeText(getApplicationContext(),
           "Clicked on Checkbox: " + cb.getText() +
           " is " + cb.isChecked(),
           Toast.LENGTH_LONG).show()
           rowcheck.setSelected(cb.isChecked());
         } 
        }); 
       }
       else 
       {
        holder = (ViewHolder) convertView.getTag();
       }
    
       Country rowcheck = rowcheckList.get(position);
      // holder.code.setText(" (" +  rowcheck.getCode() + ")");
       holder.code.setText(rowcheck.getName());
      // holder.name.setText(rowcheck.getName());
       holder.name.setChecked(rowcheck.isSelected());
       holder.name.setTag(rowcheck);
    
       return convertView;
    
      }
        }
    
        private void checkButtonClick() {
    
            Button myButton = (Button) findViewById(R.id.findSelected);
            myButton.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    StringBuffer responseText = new StringBuffer();
                    responseText.append("The following were selected...\n");
    
                    ArrayList<Country> rowcheckList = dataAdapter.rowcheckList;
    
                    System.out.println("Size" + rowcheckList.size());
                    int j = 0;
                    ArrayList<String> stt = new ArrayList<String>();
                    for (int i = 0; i < rowcheckList.size(); i++) {
                        Country rowcheck = rowcheckList.get(i);
                        // System.out.println(rowcheck.getName());
    
                        if (rowcheck.isSelected()) {
                            stt.add(rowcheck.getName());
                            // Country.st=new ArrayList<String>();
                            String s = rowcheck.getName();
                            System.out.println("String--" + rowcheck.getName());
                            Country.st.add(s);
                            j = j++;
                            System.out.println(j++);
    
                            responseText.append("\n" + rowcheck.getName());
    
                        }
    
                    }
                    for (int i = 0; i < stt.size(); i++) {
                        System.out.println("Names----" + stt.get(i).toString());
                    }
    
                    if (j >= 1 && j <= 5) {
    
                        Intent i = new Intent(ListViewCheckboxesActivity.this,
                                PickedItemListView.class);
                        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(i);
                    } else {
                        Toast.makeText(ListViewCheckboxesActivity.this,
                                "Maximum 5 Selection Allowed", Toast.LENGTH_LONG)
                                .show();
                    }
    
                    Toast.makeText(ListViewCheckboxesActivity.this, responseText,
                            Toast.LENGTH_LONG).show();
    
                }
            });
    
        }
    //Logout ALert Box
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
    
                LayoutInflater inflater = LayoutInflater
                        .from(ListViewCheckboxesActivity.this);
                View dialogview = inflater.inflate(R.layout.logout_popup, null);
                final Button ok = (Button) dialogview.findViewById(R.id.ok);
                final Button cancel = (Button) dialogview.findViewById(R.id.cancel);
                AlertDialog.Builder dialogbuilder = new AlertDialog.Builder(
                        (ListViewCheckboxesActivity.this));
                dialogbuilder.setView(dialogview);
                dialogbuilder.setInverseBackgroundForced(true);
                alertdialog = dialogbuilder.create();
                alertdialog.show();
    
                ok.setOnClickListener(new OnClickListener() {
    
                    public void onClick(View paramView) {
                        alertdialog.dismiss();
                        final Intent intent = new Intent(
                                ListViewCheckboxesActivity.this,
                                LoginActivity.class);
                        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(intent);
                        finish();
                    }
    
                });
    
                cancel.setOnClickListener(new OnClickListener() {
    
                    public void onClick(View paramView) {
                        alertdialog.cancel();
                    }
                });
    
            }
            return super.onKeyDown(keyCode, event);
        }
    
    }
    
    0 讨论(0)
  • 2021-01-16 02:41
    chk.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    // TODO Auto-generated method stub
    
                          if(isChecked){
                              chetimeslot = (String)chk.getTag();
                                checkbox_timeslot.add(chetimeslot);
    
                            }
                           else{
                               chetimeslot = (String)chk.getTag();
                                checkbox_timeslot.remove(chetimeslot);
    
    
                           }
    
    });
    
    0 讨论(0)
  • 2021-01-16 02:46

    What's wrong is your if condition. It should be:

    if( isChecked ) 
    

    and not

    if( chk.isChecked() )
    
    0 讨论(0)
  • 2021-01-16 02:50
    checkBox_sound.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
    
                varBoolSoundOn = (isChecked) ? true : false;
    
            }
        });
    

    It works Perfect...

    0 讨论(0)
提交回复
热议问题