如何在RecyclerView中更新某些特定项目

时间:2019-01-22 21:35:25

标签: android android-recyclerview

我有一个recyclerview,但是此元素不允许我更新这些元素,并且当我更改回收器中的某些元素时,最后的另一个元素也会更改。

当我在移动recyclerview时更新第一个项目时,下面另一个项目被更改了,我不知道为什么会有这种行为。我不知道还有什么可能,或者我如何使用notifydatasetchanged来解决问题,但它不起作用

   public class ConfigSituadoAdapter extends RecyclerView.Adapter<ConfigSituadoAdapter.ViewHolderConfigSituadoAdapter>  {
        ArrayList<ConfigSituadoVO> listaConfiguraciones;
        private View.OnClickListener listener;
        private Context mContext;

        public class ViewHolderConfigSituadoAdapter extends RecyclerView.ViewHolder {
            TextView EtiNomConf;
            Switch switchtoogle;
            ImageView imgRechaza;
            public ViewHolderConfigSituadoAdapter(@NonNull View itemView) {
                super(itemView);
                EtiNomConf=(TextView) itemView.findViewById(R.id.txtNomConf);
                imgRechaza = (ImageView)itemView.findViewById(R.id.ImgRechazaCarro);
                switchtoogle= (Switch) itemView.findViewById(R.id.IdSwitch);
            }
        }

        public ConfigSituadoAdapter(Context context,ArrayList<ConfigSituadoVO> listaConfiguraciones) {
            this.listaConfiguraciones = listaConfiguraciones;
            this.mContext = context;
        }

        @NonNull
        @Override
        public ConfigSituadoAdapter.ViewHolderConfigSituadoAdapter onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_config_situados,viewGroup,false);
            return new ConfigSituadoAdapter.ViewHolderConfigSituadoAdapter(view);
        }


        @Override
        public void onBindViewHolder(@NonNull final ConfigSituadoAdapter.ViewHolderConfigSituadoAdapter viewHolderConfigSituadoAdapter, final int position) {
            final BDFFCCMovil objBD = new BDFFCCMovil(listaConfiguraciones.get(position).getContext());

            viewHolderConfigSituadoAdapter.EtiNomConf.setText(listaConfiguraciones.get(position).getNomConfig());


            final int valor = listaConfiguraciones.get(position).getSwitchs();
            if(listaConfiguraciones.get(position).getRechaza()!=1) {
                viewHolderConfigSituadoAdapter.imgRechaza.setVisibility(View.GONE);
            }



          if(valor==0){
                viewHolderConfigSituadoAdapter.switchtoogle.setText("OFF");
               viewHolderConfigSituadoAdapter.switchtoogle.setTextColor(Color.parseColor("#ff0000"));
                viewHolderConfigSituadoAdapter.switchtoogle.setChecked(false);
                viewHolderConfigSituadoAdapter.switchtoogle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        if (isChecked== true) {
                            viewHolderConfigSituadoAdapter.switchtoogle.setText("ON");
                            viewHolderConfigSituadoAdapter.switchtoogle.setTextColor(Color.parseColor("#0000ff"));
                            objBD.updateTraInsCarroDet(listaConfiguraciones.get(position).getIdInsCarro(),listaConfiguraciones.get(position).getIdConfig(),listaConfiguraciones.get(position).getIdConfigDet(),"1", listaConfiguraciones.get(position).getRechaza(),1);

                            viewHolderConfigSituadoAdapter.switchtoogle.setChecked(true);
                            listaConfiguraciones.get(position).setSwitchs(1);

                            objBD.close();

                        } else {
                            Log.e("false1-",".."+isChecked);
                            viewHolderConfigSituadoAdapter.switchtoogle.setText("OFF");
                            viewHolderConfigSituadoAdapter.switchtoogle.setTextColor(Color.parseColor("#ff0000"));
                            objBD.updateTraInsCarroDet(listaConfiguraciones.get(position).getIdInsCarro(),listaConfiguraciones.get(position).getIdConfig(),listaConfiguraciones.get(position).getIdConfigDet(),"0",listaConfiguraciones.get(position).getRechaza(),0);

                            viewHolderConfigSituadoAdapter.switchtoogle.setChecked(false);
                            listaConfiguraciones.get(position).setSwitchs(0);
                            Log.e("false1---", String.valueOf(listaConfiguraciones.get(position).getSwitchs()));
                            objBD.close();
                        }
                    }
                });

            }else{
                viewHolderConfigSituadoAdapter.switchtoogle.setText("ON");
                viewHolderConfigSituadoAdapter.switchtoogle.setChecked(true);
               viewHolderConfigSituadoAdapter.switchtoogle.setTextColor(Color.parseColor("#0000ff"));
              viewHolderConfigSituadoAdapter.switchtoogle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
                   @Override
                   public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                       if (isChecked == true) { 
                           viewHolderConfigSituadoAdapter.switchtoogle.setText("ON");
                           viewHolderConfigSituadoAdapter.switchtoogle.setTextColor(Color.parseColor("#0000ff"));
                           objBD.updateTraInsCarroDet(listaConfiguraciones.get(position).getIdInsCarro(),listaConfiguraciones.get(position).getIdConfig(),listaConfiguraciones.get(position).getIdConfigDet(),"1",listaConfiguraciones.get(position).getRechaza(),1);         
                           viewHolderConfigSituadoAdapter.switchtoogle.setChecked(true);
                           listaConfiguraciones.get(position).setSwitchs(1);

                           objBD.close();
                       } else {
                           viewHolderConfigSituadoAdapter.switchtoogle.setText("OFF");
                           viewHolderConfigSituadoAdapter.switchtoogle.setTextColor(Color.parseColor("#ff0000"));
                           objBD.updateTraInsCarroDet(listaConfiguraciones.get(position).getIdInsCarro(),listaConfiguraciones.get(position).getIdConfig(),listaConfiguraciones.get(position).getIdConfigDet(),"0",listaConfiguraciones.get(position).getRechaza(),0);
                     viewHolderConfigSituadoAdapter.switchtoogle.setChecked(false);
                           listaConfiguraciones.get(position).setSwitchs(0);

                           objBD.close();
                       }


                   }
               });
            }
        }

        @Override
        public int getItemCount() {
            return listaConfiguraciones.size();
        }

    }

0 个答案:

没有答案