开关-从Recyclerview删除行时触发setOnCheckedChangeListener触发

时间:2019-04-04 14:22:37

标签: java android

基本上,我有一个带有切换和删除按钮的列表和行,我已经设置了一个setOnClickListener。每当我用我正在执行的remove调用从列表中删除一行时,它都会随机触发,我已经实现了一个接口来实现MainClass的适配器事件功能。

我放了吐司看看发生了什么。我看到当我单击“删除一行”时,setOnClickListener会不断触发约3次-4次,我不知道为什么会这样。...

我已经实现了一个接口来控制我的适配器类下事件的适配器。

 @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {


        holder.switchRow.setChecked(listdata.get(position).getStatus());

        holder.imgbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                eventHandler.DeleteClick(holder.getAdapterPosition());
            }
        });


        holder.switchRow.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    eventHandler.SwitchChange(holder.getAdapterPosition(), isChecked);
            }
        });

    }

interface EventHandler{
        void DeleteClick(int index);
        void SwitchChange(int index, boolean value);
    }

在我的主要班级下,我有:

    @Override
    public void SwitchChange(int index, boolean status) {
        Toast.makeText(this, Integer.toString(myListData.get(index).getStatus() ? 1:0)+ " " +
                        Integer.toString(index)
        ,
                Toast.LENGTH_SHORT).show();
     }

    @Override
    public void DeleteClick(int index) {
            Toast.makeText(this, "DELETING CALLED" ,
                Toast.LENGTH_SHORT).show();
        myListData.remove(index);
        adapter.notifyItemChanged(index);
        adapter.notifyDataSetChanged();
    }

我希望从列表中删除一行时不会触发SwitchChange。

0 个答案:

没有答案