jeudi 13 août 2015

Save radiogroup state on activity change

I know there have been posts on how to save radiogroup states on activity change via SharePrefs. My problem is slightly different. I have a listview that generates multiple radiogroups dynamically. How can I make sure when a user leaves the current activity that each of the listview radiogroups are saved?? Below is my current adapter class showing my getView method.

 @Override
 public View getView(final int position, final View convertView, ViewGroup parent) {
  View v = convertView;

  final ViewHolder holder;
  if(v == null) {
     v = mInflater.inflate(R.layout.list_item_car, parent, false);
     holder = new ViewHolder();
     holder.txtCarName = (TextView) v.findViewById(R.id.txt_car_name);
     holder.radioGroup = (RadioGroup) v.findViewById(R.id.scale);

     holder.radioGroup.setTag(position);
     v.setTag(holder);


  }
  else {
     holder = (ViewHolder) v.getTag();
  }

  // fill row data
  final Car currentItem = getItem(position);
  if(currentItem != null) {
     holder.txtCarName.setText(currentItem.getCar());
     holder.radioGroup.setTag(currentItem.getAnswer());
  }


  holder.radioGroup.setOnCheckedChangeListener(null);
  holder.radioGroup.clearCheck();

  if(checked.indexOfKey(position)>-1){
     holder.radioGroup.check(checked.get(position));
  }else{
     holder.radioGroup.clearCheck();
  }

  holder.radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

     @Override
     public void onCheckedChanged(RadioGroup group, int checkedId) {

        String Answer = null;
        if(checkedId>-1){
           checked.put(position, checkedId);


           switch (checkedId) {
              case R.id.a1:
                 Answer = "r1";
                 break;
              case R.id.a2:
                 Answer = "r2";
                 break;
              case R.id.a3:
                 Answer = "r3";
                 break;
              case R.id.a4:
                 Answer = "r4";
                 break;
           }

           db.addListItem(“testCar", Answer, getCurrentTimeStamp());  //<----null object reference happening here


        }else{
           if(checked.indexOfKey(position)>-1)
              checked.removeAt(checked.indexOfKey(position));
        }

     }
     });



  return v;
  }



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire