How to handle checkchecked and unchecked event checkbox in android

I am new to android.i, creating simple math apps. I use this checkbox to select the option I want, but the problem is here. The answer option is not only one, but also two, three means multi-choice, so I use the checkbox

chkOption.setOnCheckedChangeListener(this); 

and try to process this.and save the select value in one Arraylist.but, when I select an option, the value is added to arrayList, but when I uncheck (Diselect), then an event also occurs, and the value is added to arraylist, my code is below

 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { CheckBox chk=(CheckBox) buttonView; if(chk.isChecked()) { forMetchCheckBox.add(String.valueOf(chk.getText())); } } 

forMetchCheckbow is my String ArrayList. So what can I do? How to deal with this problem. if any user deselects the option, will the flag value be removed from ArrayList.it`s perhaps?

0
source share
5 answers

It seems you have more than one flag, and you set a global listener for each flag. So, in this case, you also need to identify the event for a specific flag.

 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){ .... } } 

etc., this will make your listener perfect.

+6
source
 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); } }); 
+1
source

Select a maximum of 5 check boxes in the "One-time" or "Mark selected and unselected" boxes in the "Custom List" using 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); } } 
+1
source

Your if condition is wrong. It should be:

 if( isChecked ) 

but not

 if( chk.isChecked() ) 
0
source
 checkBox_sound.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { varBoolSoundOn = (isChecked) ? true : false; } }); 

It works perfect ...

0
source

All Articles