Android 我有两个BaseAdapter,其中包含复选框,如何根据Adapter1的值选中Adapter2的复选框

Android 我有两个BaseAdapter,其中包含复选框,如何根据Adapter1的值选中Adapter2的复选框,android,checkbox,android-custom-view,custom-adapter,Android,Checkbox,Android Custom View,Custom Adapter,我有两个BaseAdapterAdapter1和Adapter2,在选中Adapter1中的复选框后,它保存在Arraylist中,并传递给Adapter2。我想选中Adapter1中选中的Adapter2复选框。两个适配器将具有相同的值 我已经试过了,但它正在起作用 java.lang.IndexOutOfBoundsException:索引: 作为从适配器1传递的值 在这种情况下,有人能帮忙吗。 这是两个适配器1 public class RouterSpinnerAdapter exten

我有两个BaseAdapterAdapter1和Adapter2,在选中Adapter1中的复选框后,它保存在Arraylist中,并传递给Adapter2。我想选中Adapter1中选中的Adapter2复选框。两个适配器将具有相同的值

我已经试过了,但它正在起作用

java.lang.IndexOutOfBoundsException:索引:

作为从适配器1传递的值

在这种情况下,有人能帮忙吗。 这是两个适配器1

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;
}

 }
公共类RouterSpinnerAdapter扩展BaseAdapter实现可过滤{
语境;
LayoutInflater LayoutInflater;
ArrayList routermodeldata;
ArrayList RotterSelectedModelData;
ArrayListorig;
布尔[]rowtercheckBoxState;
布尔标志;
公共RouterSpinnerAdapter(上下文上下文、ArrayListroutermodeldata、布尔标志){
this.context=context;
this.routermodeldata=routermodeldata;
这个.flag=flag;
rowtercheckBoxState=新布尔值[routermodeldata.size()];
rowterselectedmodeldata=new ArrayList();
}
@凌驾
public int getCount(){
返回routermodeldata.size();
}
@凌驾
公共对象getItem(int位置){
返回routermodeldata.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
ViewHolder ViewHolder=null;
if(convertView==null){
layoutInflater=(layoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
convertView=LayoutFlater.充气(R.layout.Rotter\u spinner\u row,空);
viewHolder=新的viewHolder();
viewHolder.ch_select_rowter=(复选框)convertView.findViewById(R.id.ch_select_rowter);
viewHolder.t_rowtername=(TextView)convertView.findViewById(R.id.t_rowtername);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
最终RouterSelectModel模型=(RouterSelectModel)routermodeldata.get(位置);
viewHolder.t_rowtername.setText(model.getRoutername());
viewHolder.ch_select_rowter.setChecked(rowtercheckBoxState[position]);
viewHolder.ch_select_rowter.setOnClickListener(new View.OnClickListener()){
公共void onClick(视图v){
试一试{
如果(((复选框)v).isChecked()){
rowtercheckBoxState[位置]=真;
//选择ManagerHashMap.put(model.getManagername(),model.getManagername());
//saveToCustom(model.getDominaname(),sessionManager.getUserID());
rowterselectedmodeldata.add(模型);
}否则
{
rowtercheckBoxState[位置]=假;
//selectedManagerHashMap.remove(model.getManagername());
//removeFromCustom(model.getDominaname(),sessionManager.getUserID());
rowterselectedmodeldata.remove(模型);
}
}捕获(阵列索引边界外异常e){
}
}
});
返回视图;
}
@凌驾
公共过滤器getFilter(){
返回新筛选器(){
@凌驾
受保护过滤器结果执行过滤(CharSequence CharSequence){
final FilterResults oReturn=新的FilterResults();
最终ArrayList结果=新建ArrayList();
if(orig==null)
orig=路由模型数据;
if(charSequence!=null){
if(orig!=null&&orig.size()>0){
对于(最终路线选择模型:原始){
if(g.getRoutername().toLowerCase().contains(charSequence.toString()))
结果:添加(g);
}
}
oReturn.values=结果;
}
返回或返回;
}
@凌驾
受保护的无效发布结果(CharSequence CharSequence、FilterResults FilterResults){
routermodeldata=(ArrayList)filterResults.values;
notifyDataSetChanged();
}
};
}
public void selectallrower(布尔标志){
如果(标志==真){

对于(inti=0;i我通过做一些研究和开发得到了答案,这里是解决方案

public class DRRouterSpinnerAdapter extends BaseAdapter implements Filterable{
Context context;
LayoutInflater layoutInflater;
ArrayList<DRRouterSpinnerModel> drroutermodeldata;
ArrayList<DRRouterSpinnerModel> drrowterselectedmodeldata;
ArrayList<DRRouterSpinnerModel>orig;
boolean[] drrowtercheckBoxState;
boolean flag;
ArrayList<TeamRouterSelectModel> routerlistfrom1;
ArrayList<String>datafrom1;

public DRRouterSpinnerAdapter(Context context, ArrayList<DRRouterSpinnerModel>routermodeldata, ArrayList<TeamRouterSelectModel> routerlistfrom1 , boolean flag, ArrayList<String>datafrom1){
    this.context=context;
    this.drroutermodeldata=routermodeldata;
    this.flag=flag;
    drrowtercheckBoxState = new boolean[routermodeldata.size()];
    drrowterselectedmodeldata=new ArrayList<>();
    this.routerlistfrom1=routerlistfrom1;
    this.datafrom1=datafrom1;

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

@Override
public Object getItem(int position) {
    return drroutermodeldata.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 DRRouterSpinnerModel model=(DRRouterSpinnerModel)drroutermodeldata.get(position);

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

    checkSelected(model,position);

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

        public void onClick(View v) {
            try {
                if(((CheckBox)v).isChecked()){
                    drrowtercheckBoxState[position]=true;
                    // selectedManagerHashMap.put(model.getManagername(),model.getManagername());
                    // saveToCustom(model.getDominaname(),sessionManager.getUserID());
                    drrowterselectedmodeldata.add(model);


                }else
                {
                    drrowtercheckBoxState[position]=false;
                    // selectedManagerHashMap.remove(model.getManagername());
                    //removeFromCustom(model.getDominaname(),sessionManager.getUserID());
                    drrowterselectedmodeldata.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<DRRouterSpinnerModel> results = new ArrayList<DRRouterSpinnerModel>();
            if (orig == null)
                orig = drroutermodeldata;
            if (charSequence != null) {
                if (orig != null && orig.size() > 0) {
                    for (final DRRouterSpinnerModel 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) {
            drroutermodeldata = (ArrayList<DRRouterSpinnerModel>) filterResults.values;
            notifyDataSetChanged();
        }
    };
}
public void fun2selectAllRowter(boolean flag){
    if (flag==true){
        for (int i = 0; i <drrowtercheckBoxState.length ; i++) {

            drrowtercheckBoxState[i]=flag;
            drrowterselectedmodeldata.add(drroutermodeldata.get(i));
            notifyDataSetChanged();
        }
    }if (flag==false){
        for (int i = 0; i <drrowtercheckBoxState.length ; i++) {

            drrowtercheckBoxState[i]=flag;
            drrowterselectedmodeldata.remove(drroutermodeldata.get(i));
            notifyDataSetChanged();
        }
    }


}
public ArrayList<DRRouterSpinnerModel> getRoterseletedItems(){
   /* HashSet<DRRouterSpinnerModel> hashSet_fun2rowterselectedmodeldata = new HashSet<DRRouterSpinnerModel>();
    hashSet_fun2rowterselectedmodeldata.addAll(fun2rowterselectedmodeldata);
    fun2rowterselectedmodeldata.clear();
    fun2rowterselectedmodeldata.addAll(hashSet_fun2rowterselectedmodeldata);*/

    return drrowterselectedmodeldata;
}
public void checkSelected(DRRouterSpinnerModel model,int position){

    for (int i = 0; i <datafrom1.size() ; i++) {

        if (datafrom1.get(i).equalsIgnoreCase(model.getRouter2name())){
            drrowtercheckBoxState[position]=true;
            drrowterselectedmodeldata.add(model);

        }
    }

}

static class ViewHolder{

    TextView t_rowtername2;
    CheckBox ch_select_rowter2;
}
公共类DRRouterSpinnerAdapter扩展BaseAdapter实现可过滤{
语境;
LayoutInflater LayoutInflater;
ArrayList drroutermodeldata;
ArrayList drrowterselectedmodeldata;
ArrayListorig;
布尔[]drrowtercheckBoxState;
布尔标志;
ArrayList routerlistfrom1;
ArrayListdatafrom1;
公共DRRouterSpinnerAdapter(上下文上下文、ArrayListroutermodeldata、ArrayListRouterListFrom1、布尔标志、ArrayListdatafrom1){
this.context=context;
drroutermodeldata=routermodeldata;
这个.flag=flag;
drrowtercheckBoxState=新布尔值[routermodeldata.size()];
drrowterselectedmodeldata=newarraylist();
this.routerlistfrom1=routerlistfrom1;
this.datafrom1=datafrom1;
}
@凌驾
public int getCount(){
返回drroutermodeldata.size();
}
@凌驾
公共对象getItem(int位置){
返回drroutermodeldata.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
ViewHolder ViewHolder=null;
if(convertView==null){
layoutInflater=(layoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
convertView=LayoutFlater.充气(R.layout.fun2\u Rotter\u spinner\u row,空);
viewHolder=新的viewHolder();
viewHolder.ch_select_rowter2=(复选框)convertView.findViewById(R.id.ch_select_rowter2);
viewHolder.t_rowtername2=(TextView)convertView.findViewById(R.id.t_rowtername2);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
public class DRRouterSpinnerAdapter extends BaseAdapter implements Filterable{
Context context;
LayoutInflater layoutInflater;
ArrayList<DRRouterSpinnerModel> drroutermodeldata;
ArrayList<DRRouterSpinnerModel> drrowterselectedmodeldata;
ArrayList<DRRouterSpinnerModel>orig;
boolean[] drrowtercheckBoxState;
boolean flag;
ArrayList<TeamRouterSelectModel> routerlistfrom1;
ArrayList<String>datafrom1;

public DRRouterSpinnerAdapter(Context context, ArrayList<DRRouterSpinnerModel>routermodeldata, ArrayList<TeamRouterSelectModel> routerlistfrom1 , boolean flag, ArrayList<String>datafrom1){
    this.context=context;
    this.drroutermodeldata=routermodeldata;
    this.flag=flag;
    drrowtercheckBoxState = new boolean[routermodeldata.size()];
    drrowterselectedmodeldata=new ArrayList<>();
    this.routerlistfrom1=routerlistfrom1;
    this.datafrom1=datafrom1;

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

@Override
public Object getItem(int position) {
    return drroutermodeldata.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 DRRouterSpinnerModel model=(DRRouterSpinnerModel)drroutermodeldata.get(position);

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

    checkSelected(model,position);

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

        public void onClick(View v) {
            try {
                if(((CheckBox)v).isChecked()){
                    drrowtercheckBoxState[position]=true;
                    // selectedManagerHashMap.put(model.getManagername(),model.getManagername());
                    // saveToCustom(model.getDominaname(),sessionManager.getUserID());
                    drrowterselectedmodeldata.add(model);


                }else
                {
                    drrowtercheckBoxState[position]=false;
                    // selectedManagerHashMap.remove(model.getManagername());
                    //removeFromCustom(model.getDominaname(),sessionManager.getUserID());
                    drrowterselectedmodeldata.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<DRRouterSpinnerModel> results = new ArrayList<DRRouterSpinnerModel>();
            if (orig == null)
                orig = drroutermodeldata;
            if (charSequence != null) {
                if (orig != null && orig.size() > 0) {
                    for (final DRRouterSpinnerModel 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) {
            drroutermodeldata = (ArrayList<DRRouterSpinnerModel>) filterResults.values;
            notifyDataSetChanged();
        }
    };
}
public void fun2selectAllRowter(boolean flag){
    if (flag==true){
        for (int i = 0; i <drrowtercheckBoxState.length ; i++) {

            drrowtercheckBoxState[i]=flag;
            drrowterselectedmodeldata.add(drroutermodeldata.get(i));
            notifyDataSetChanged();
        }
    }if (flag==false){
        for (int i = 0; i <drrowtercheckBoxState.length ; i++) {

            drrowtercheckBoxState[i]=flag;
            drrowterselectedmodeldata.remove(drroutermodeldata.get(i));
            notifyDataSetChanged();
        }
    }


}
public ArrayList<DRRouterSpinnerModel> getRoterseletedItems(){
   /* HashSet<DRRouterSpinnerModel> hashSet_fun2rowterselectedmodeldata = new HashSet<DRRouterSpinnerModel>();
    hashSet_fun2rowterselectedmodeldata.addAll(fun2rowterselectedmodeldata);
    fun2rowterselectedmodeldata.clear();
    fun2rowterselectedmodeldata.addAll(hashSet_fun2rowterselectedmodeldata);*/

    return drrowterselectedmodeldata;
}
public void checkSelected(DRRouterSpinnerModel model,int position){

    for (int i = 0; i <datafrom1.size() ; i++) {

        if (datafrom1.get(i).equalsIgnoreCase(model.getRouter2name())){
            drrowtercheckBoxState[position]=true;
            drrowterselectedmodeldata.add(model);

        }
    }

}

static class ViewHolder{

    TextView t_rowtername2;
    CheckBox ch_select_rowter2;
}