Java Android警报对话框功能不正常

Java Android警报对话框功能不正常,java,android,Java,Android,我使用了一个警报对话框来确认删除,我创建了一个回收器视图,其中应用了两种方法1.滑动删除方法,2。菜单栏删除方法。在“滑动方法”中,当我滑动视图时,单击“否”时,它删除了“列表并显示警报”对话框,然后它取代的不是原始空间,而是另一个在它们之间创建空间的空间。请告诉我这是什么问题 package com.example.framelayout; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialo

我使用了一个警报对话框来确认删除,我创建了一个回收器视图,其中应用了两种方法1.滑动删除方法,2。菜单栏删除方法。在“滑动方法”中,当我滑动视图时,单击“否”时,它删除了“列表并显示警报”对话框,然后它取代的不是原始空间,而是另一个在它们之间创建空间的空间。请告诉我这是什么问题

package com.example.framelayout;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;

import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.material.snackbar.BaseTransientBottomBar;
import com.google.android.material.snackbar.Snackbar;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class MainActivity extends AppCompatActivity implements RecyclerClickListener, RecyclerActionClick {

    private RecyclerView recyclerView;
    private detailAdapt adapt;
    private List<detailModel> modelList = new ArrayList<>();
    detailModel modelData, swipeData;
    ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
            final int position = viewHolder.getAdapterPosition();
            if (direction == ItemTouchHelper.LEFT) {
                swipeData = modelList.get(position);

                showDialogBox(position, true);
            }


        }
    };

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView = findViewById(R.id.recycler_details);
        populateList();


    }

    private void populateList() {

        for (int i = 0; i < 10; i++) {
            int img = R.drawable.ic_person;
            String person = "Person  " + i;
            String name = "Person Name " + i;
            String msg = "Person Last Message " + i;
            detailModel model = new detailModel(person, name, msg, img);
            modelList.add(model);
        }
        addRecycle(modelList);
    }

    private void addRecycle(List<detailModel> modelList) {
        adapt = new detailAdapt(this, modelList, this, this);
        LinearLayoutManager layout = new LinearLayoutManager(this);
        layout.setSmoothScrollbarEnabled(true);
        recyclerView.setAdapter(adapt);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(layout);

        ItemTouchHelper helper = new ItemTouchHelper(simpleCallback);
        helper.attachToRecyclerView(recyclerView);

    }

    @Override
    public void onDeleteCLick(Object obj, int position) {

        showDialogBox(position, false);

    }

    private void showDialogBox(final int position, final boolean isSwiped) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Confirmation");
        builder.setMessage("Are you sure to delete this Item");
        builder.setCancelable(false);
        builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                deleteItem(position);

            }
        });
        builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                if (isSwiped) {
                    modelList.add(position, swipeData);
                    adapt.notifyItemInserted(position);

                }

            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();

    }

    private void deleteItem(final int position) {
        modelData = modelList.get(position);
        modelList.remove(position);
        adapt.notifyItemRemoved(position);

        Snackbar snackbar = Snackbar.make(recyclerView, "item removed at position " + position, Snackbar.LENGTH_LONG);
        snackbar.setAction("undo", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                modelList.add(position, modelData);
                adapt.notifyItemInserted(position);

            }
        });
        snackbar.show();
    }


    @Override
    public void onUndoCLick(Object obj, int position) {

    }

    @Override
    public void onSingleClick(Object obj, int position) {
        detailModel model = (detailModel) obj;
        Toast.makeText(this, "click at " + position, Toast.LENGTH_SHORT).show();
    }
}
package com.example.framelayout;
导入androidx.annotation.NonNull;
导入androidx.appcompat.app.AlertDialog;
导入androidx.appcompat.app.appcompat活动;
导入androidx.recyclerview.widget.GridLayoutManager;
导入androidx.recyclerview.widget.ItemTouchHelper;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入androidx.recyclerview.widget.StaggedGridLayoutManager;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.content.res.Configuration;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.google.android.material.snackbar.BaseTransientBottomBar;
导入com.google.android.material.snackbar.snackbar;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
公共类MainActivity扩展AppCompatActivity实现RecyclerClickListener,RecyclerActionClick{
私人回收站;
私营企业适应;
private List modelList=new ArrayList();
详细模型数据,swipeData;
ItemTouchHelper.SimpleCallback SimpleCallback=新建ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT){
@凌驾
公共布尔onMove(@NonNull RecyclerView RecyclerView,@NonNull RecyclerView.ViewHolder ViewHolder,@NonNull RecyclerView.ViewHolder target){
返回false;
}
@凌驾
公共void onsweed(@NonNull RecyclerView.ViewHolder ViewHolder,int-direction){
final int position=viewHolder.getAdapterPosition();
if(direction==ItemTouchHelper.LEFT){
swipeData=modelList.get(位置);
显示对话框(位置,真);
}
}
};
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.recycler\U详细信息);
大众主义者();
}
私有void populateList(){
对于(int i=0;i<10;i++){
int img=R.drawable.ic_人员;
字符串person=“person”+i;
String name=“人名”+i;
String msg=“Person Last Message”+i;
detailModel=新的detailModel(个人、姓名、消息、img);
添加(模型);
}
addRecycle(模型列表);
}
私有void addRecycle(列表模型列表){
adapt=新的detailAdapt(this,modelList,this,this);
LinearLayoutManager布局=新的LinearLayoutManager(此);
layout.setSmoothScrollbarEnabled(真);
recyclerView.setAdapter(自适应);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(布局);
ItemTouchHelper=新的ItemTouchHelper(simpleCallback);
helper.attachToRecyclerView(recyclerView);
}
@凌驾
公共对象单击(对象对象,内部位置){
显示对话框(位置,false);
}
专用void显示对话框(最终int位置,最终布尔值){
AlertDialog.Builder=新建AlertDialog.Builder(此);
建造商名称(“确认书”);
builder.setMessage(“您确定要删除此项吗”);
builder.setCancelable(false);
builder.setPositiveButton(“是”,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.dismise();
删除项目(位置);
}
});
setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.dismise();
如果(已删除){
modelList.add(位置,swipeData);
适应。插入(位置);
}
}
});
AlertDialog=builder.create();
dialog.show();
}
私有无效删除项(最终整数位置){
modelData=modelList.get(位置);
模型列表。移除(位置);
适应。移除(位置);
Snackbar Snackbar=Snackbar.make(recyclerView,“在位置移除的项目”+位置,Snackbar.LENGTH\u LONG);
snackbar.setAction(“undo”,new View.OnClickListener()){
@凌驾
公共void onClick(视图v){
添加(位置、模型数据);
适应。插入(位置);
}
});
snackbar.show();
}
@凌驾
公共无效onUndoCLick(对象对象对象,int位置){
}
@凌驾
SingleClick上的公共无效(对象对象对象,内部位置){
detailModel=(detailModel)obj;
Toast.makeText(这是“单击”+位置,Toast.LENGTH_SHORT).show();
}
}
请删除下面的内容

modelList.add(position, swipeData);
adapt.notifyItemInserted(position);
从“警报”对话框的“取消”按钮,因为您尚未删除该项目,因此无需再次插入该项目。替换为
notifyItemChanged(位置)如下所示

    builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
            if (isSwiped) {
                 adapt.notifyItemChanged(position);
            }

        }
    });

下图。请检查并指导我有关此问题。删除项目时,您将显示警报对话框和快捷键。。这可能太多了,我只是想在确认后删除,但这不会发生,因为当我刷它时,值会删除它们的位置,当我说“不”时