mercredi 29 août 2018

I have tow BaseAdapter which contain checkboxes, how to check the checkbox of Adapter2 based on the values from the Adapter1

I am having two BaseAdapter Adapter1 and Adapter2, after checking the checkbox from adapter1 it is saved in the Arraylist and which is passed to Adapter2. I want to check the checkbox of Adapter2 which are selected in the Adapter1.Both Adapter will have the same values.

i have tried but it is giving java.lang.IndexOutOfBoundsException: Index: as the passed values from the Adapter1.

can any one please help in this case please. here is the two adapter Adapter1 is

public class RouterSpinnerAdapter extends BaseAdapter implements Filterable{
Context context;
LayoutInflater layoutInflater;
ArrayList<RouterSelectModel> routermodeldata;
ArrayList<RouterSelectModel> rowterselectedmodeldata;
ArrayList<RouterSelectModel>orig;
boolean[] rowtercheckBoxState;
boolean flag;
public RouterSpinnerAdapter(Context context, ArrayList<RouterSelectModel>routermodeldata, boolean flag){
    this.context=context;
    this.routermodeldata=routermodeldata;
    this.flag=flag;
    rowtercheckBoxState = new boolean[routermodeldata.size()];
    rowterselectedmodeldata=new ArrayList<>();

}
@Override
public int getCount() {
    return routermodeldata.size();
}

@Override
public Object getItem(int position) {
    return routermodeldata.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

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

    if (convertView==null){
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView =layoutInflater.inflate(R.layout.rowter_spinner_row, null);
        viewHolder = new ViewHolder();
        viewHolder.ch_select_rowter =(CheckBox) convertView.findViewById(R.id.ch_select_rowter);
        viewHolder.t_rowtername=(TextView)convertView.findViewById(R.id.t_rowtername);

        convertView.setTag(viewHolder);

    }else{
        viewHolder = (ViewHolder) convertView.getTag();
    }
    final RouterSelectModel model=(RouterSelectModel)routermodeldata.get(position);

    viewHolder.t_rowtername.setText(model.getRoutername());
    viewHolder.ch_select_rowter.setChecked(rowtercheckBoxState[position]);

    viewHolder.ch_select_rowter.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            try {
                if(((CheckBox)v).isChecked()){
                    rowtercheckBoxState[position]=true;
                    // selectedManagerHashMap.put(model.getManagername(),model.getManagername());
                   // saveToCustom(model.getDominaname(),sessionManager.getUserID());
                    rowterselectedmodeldata.add(model);
                }else
                {
                    rowtercheckBoxState[position]=false;
                    // selectedManagerHashMap.remove(model.getManagername());
                    //removeFromCustom(model.getDominaname(),sessionManager.getUserID());
                    rowterselectedmodeldata.remove(model);
                }
            }catch (ArrayIndexOutOfBoundsException e){

            }
        }

    });

    return convertView;
}

@Override
public Filter getFilter() {
    return new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {
            final FilterResults oReturn = new FilterResults();
            final ArrayList<RouterSelectModel> results = new ArrayList<RouterSelectModel>();
            if (orig == null)
                orig = routermodeldata;
            if (charSequence != null) {
                if (orig != null && orig.size() > 0) {
                    for (final RouterSelectModel g : orig) {
                        if (g.getRoutername().toLowerCase().contains(charSequence.toString()))
                            results.add(g);
                    }
                }
                oReturn.values = results;
            }
            return oReturn;
        }

        @Override
        protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
            routermodeldata = (ArrayList<RouterSelectModel>) filterResults.values;
            notifyDataSetChanged();
        }
    };
}
 public void selectAllRowter(boolean flag){
if (flag==true){
    for (int i = 0; i <rowtercheckBoxState.length ; i++) {

        rowtercheckBoxState[i]=flag;
        rowterselectedmodeldata.add(routermodeldata.get(i));
        notifyDataSetChanged();
    }
}if (flag==false){
    for (int i = 0; i <rowtercheckBoxState.length ; i++) {

        rowtercheckBoxState[i]=flag;
        rowterselectedmodeldata.remove(routermodeldata.get(i));
        notifyDataSetChanged();
    }
}


 }
 public ArrayList<RouterSelectModel> getseletedItems(){
    return rowterselectedmodeldata;
 }
static class ViewHolder{

    TextView t_rowtername;
    CheckBox ch_select_rowter;
}

 }

Adapter2 is

     public class Fun2RouterSpinnerAdapter extends BaseAdapter implements Filterable{
Context context;
LayoutInflater layoutInflater;
ArrayList<Fun2RouterSpinnerModel> fun2routermodeldata;
ArrayList<Fun2RouterSpinnerModel> fun2rowterselectedmodeldata;
ArrayList<Fun2RouterSpinnerModel>orig;
boolean[] fun2rowtercheckBoxState;
boolean flag;
ArrayList<RouterSelectModel> routerlistfrom1;
public Fun2RouterSpinnerAdapter(Context context, ArrayList<Fun2RouterSpinnerModel>routermodeldata,ArrayList<RouterSelectModel> routerlistfrom1 ,boolean flag){
    this.context=context;
    this.fun2routermodeldata=routermodeldata;
    this.flag=flag;
    fun2rowtercheckBoxState = new boolean[routermodeldata.size()];
    fun2rowterselectedmodeldata=new ArrayList<>();
    this.routerlistfrom1=routerlistfrom1;

}
@Override
public int getCount() {
    return fun2routermodeldata.size();
}

@Override
public Object getItem(int position) {
    return fun2routermodeldata.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

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

    if (convertView==null){
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView =layoutInflater.inflate(R.layout.fun2_rowter_spinner_row, null);
        viewHolder = new ViewHolder();
        viewHolder.ch_select_rowter2 =(CheckBox) convertView.findViewById(R.id.ch_select_rowter2);
        viewHolder.t_rowtername2=(TextView)convertView.findViewById(R.id.t_rowtername2);

        convertView.setTag(viewHolder);

    }else{
        viewHolder = (ViewHolder) convertView.getTag();
    }
    final Fun2RouterSpinnerModel model=(Fun2RouterSpinnerModel)fun2routermodeldata.get(position);

    viewHolder.t_rowtername2.setText(model.getRouter2name());
    viewHolder.ch_select_rowter2.setChecked(fun2rowtercheckBoxState[position]);




    viewHolder.ch_select_rowter2.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            try {
                if(((CheckBox)v).isChecked()){
                    fun2rowtercheckBoxState[position]=true;
                    // selectedManagerHashMap.put(model.getManagername(),model.getManagername());
                    // saveToCustom(model.getDominaname(),sessionManager.getUserID());
                    fun2rowterselectedmodeldata.add(model);
                }else
                {
                    fun2rowtercheckBoxState[position]=false;
                    // selectedManagerHashMap.remove(model.getManagername());
                    //removeFromCustom(model.getDominaname(),sessionManager.getUserID());
                    fun2rowterselectedmodeldata.remove(model);
                }
            }catch (ArrayIndexOutOfBoundsException e){

            }
        }

    });
     checkSelected(true,routernamefrom1))
    return convertView;
}

@Override
public Filter getFilter() {
    return new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {
            final FilterResults oReturn = new FilterResults();
            final ArrayList<Fun2RouterSpinnerModel> results = new ArrayList<Fun2RouterSpinnerModel>();
            if (orig == null)
                orig = fun2routermodeldata;
            if (charSequence != null) {
                if (orig != null && orig.size() > 0) {
                    for (final Fun2RouterSpinnerModel g : orig) {
                        if (g.getRouter2name().toLowerCase().contains(charSequence.toString()))
                            results.add(g);
                    }
                }
                oReturn.values = results;
            }
            return oReturn;
        }

        @Override
        protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
            fun2routermodeldata = (ArrayList<Fun2RouterSpinnerModel>) filterResults.values;
            notifyDataSetChanged();
        }
    };
}
public void fun2selectAllRowter(boolean flag){
    if (flag==true){
        for (int i = 0; i <fun2rowtercheckBoxState.length ; i++) {

            fun2rowtercheckBoxState[i]=flag;
            fun2rowterselectedmodeldata.add(fun2routermodeldata.get(i));
            notifyDataSetChanged();
        }
    }if (flag==false){
        for (int i = 0; i <fun2rowtercheckBoxState.length ; i++) {

            fun2rowtercheckBoxState[i]=flag;
            fun2rowterselectedmodeldata.remove(fun2routermodeldata.get(i));
            notifyDataSetChanged();
        }
    }


}
public ArrayList<Fun2RouterSpinnerModel> getRoterseletedItems(){
    return fun2rowterselectedmodeldata;
}
public boolean checkSelected(boolean flag,String routernamefrom1){

    for (int i = 0; i <fun2routermodeldata.size() ; i++) {
        if(routernamefrom1.equalsIgnoreCase(fun2routermodeldata.get(i).getRouter2name())){
            fun2rowtercheckBoxState[i]=flag;
            return true;
        }
    }

    return false;
}
static class ViewHolder{

    TextView t_rowtername2;
    CheckBox ch_select_rowter2;
}
  }




Aucun commentaire:

Enregistrer un commentaire