How to Handle the checkbox ischecked and unchecked event in android

后端 未结 5 1672
慢半拍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

    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 rowcheckList = new ArrayList();
            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 {
            private ArrayList rowcheckList;
    
            public MyCustomAdapter(Context context, int textViewResourceId,
                    ArrayList rowcheckList) {
                super(context, textViewResourceId, rowcheckList);
                this.rowcheckList = new ArrayList();
                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 rowcheckList = dataAdapter.rowcheckList;
    
                    System.out.println("Size" + rowcheckList.size());
                    int j = 0;
                    ArrayList stt = new ArrayList();
                    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 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);
        }
    
    }
    

提交回复
热议问题