Java Android滑动以删除recyclerView项目

Java Android滑动以删除recyclerView项目,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我可以删除我的recyclerView项目,也可以从firebase实时数据库中删除。但是,当我滑动该项目并删除时,顶级回收商项目会出现在我删除的recyclerview位置。我怎样才能解决这个问题 我的源代码: 我正在尝试刷和删除回收项目就在这里 private Toolbar toolbar; public DatabaseReference duyuruRef; public RecyclerView recyclerView; ArrayList<Duyuru> duyuru

我可以删除我的recyclerView项目,也可以从firebase实时数据库中删除。但是,当我滑动该项目并删除时,顶级回收商项目会出现在我删除的recyclerview位置。我怎样才能解决这个问题

我的源代码: 我正在尝试刷和删除回收项目就在这里

private Toolbar toolbar;
public DatabaseReference duyuruRef;
public RecyclerView recyclerView;
ArrayList<Duyuru> duyurular;
RecyclerAdapter recyclerAdapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ogretmen_duyuru_delete);

    recyclerView = findViewById(R.id.recyclerDelete);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    duyuruRef = FirebaseDatabase.getInstance().getReference();
    duyuruRef.keepSynced(true);
    duyurular = new ArrayList<>();

    getDataFromFirebase();
    setUpToolbar();

    ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder target, int i) {
            Duyuru duyuru = new Duyuru();
            DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
            DatabaseReference duyuruRef = rootRef.child("Duyuru");
            String pid = duyuru.getPid();
            int position = target.getAdapterPosition();
            duyuruRef.child(pid).removeValue();
            duyurular.remove(position);
            recyclerAdapter.notifyDataSetChanged();
        }
    });
    helper.attachToRecyclerView(recyclerView);
}

private void getDataFromFirebase() {
    Query query = duyuruRef.child("Duyuru");
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
                Duyuru duyuru = new Duyuru();
                duyuru.setDuyuruBaslik(snapshot.child("title").getValue().toString());
                duyuru.setDuyuruContext(snapshot.child("context").getValue().toString());
                duyuru.setDuyuruTime(snapshot.child("time").getValue().toString());
                duyuru.setDuyuruDate(snapshot.child("date").getValue().toString());
                duyuru.setDuyuruYazar(snapshot.child("yazar").getValue().toString());

                duyurular.add(duyuru);
            }
            recyclerAdapter = new RecyclerAdapter(getApplicationContext(),duyurular);
            recyclerView.setAdapter(recyclerAdapter);
            recyclerAdapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}
专用工具栏;
公共数据库参考duyuruRef;
公共回收视图回收视图;
ArrayList duyurular;
回收器适配器回收器适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u ogretmen\u duyuru\u delete);
recyclerView=findViewById(R.id.recyclerDelete);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
duyuruRef=FirebaseDatabase.getInstance().getReference();
duyuruRef.keepSynced(真);
duyurular=newarraylist();
getDataFromFirebase();
设置工具栏();
ItemTouchHelper=new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT){
@凌驾
公共布尔值onMove(@NonNull RecyclerView RecyclerView,@NonNull RecyclerView.ViewHolder ViewHolder,@NonNull RecyclerView.ViewHolder viewHolder1){
返回false;
}
@凌驾
公共void onsweed(@NonNull RecyclerView.ViewHolder target,int i){
Duyuru Duyuru=新的Duyuru();
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
DatabaseReference duyuruRef=rootRef.child(“Duyuru”);
字符串pid=duyuru.getPid();
int position=target.getAdapterPosition();
duyuruRef.child(pid).removeValue();
duyurular.移除(位置);
recyclerAdapter.notifyDataSetChanged();
}
});
helper.attachToRecyclerView(recyclerView);
}
私有void getDataFromFirebase(){
Query Query=duyuruRef.child(“Duyuru”);
addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
对于(DataSnapshot快照:DataSnapshot.getChildren()){
Duyuru Duyuru=新的Duyuru();
setDuyuruBaslik(snapshot.child(“title”).getValue().toString());
setDuyuruContext(snapshot.child(“context”).getValue().toString());
setDuyuruTime(snapshot.child(“time”).getValue().toString());
setDuyuruDate(snapshot.child(“日期”).getValue().toString());
setDuyuruYazar(snapshot.child(“yazar”).getValue().toString());
添加(duyuru);
}
recyclerAdapter=新的recyclerAdapter(getApplicationContext(),duyurular);
recyclerView.setAdapter(recyclerAdapter);
recyclerAdapter.notifyDataSetChanged();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
如果您想要我的回收适配器,请点击这里:

private Context mContext;
private ArrayList<Duyuru> duyuruArrayList;

public RecyclerAdapter(Context mContext, ArrayList<Duyuru> duyuruArrayList) {
    this.mContext = mContext;
    this.duyuruArrayList = duyuruArrayList;
}

@NonNull
@Override
public RecyclerAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.duyuru_items_layout,parent,false);

    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
    holder.txtBaslik.setText(duyuruArrayList.get(position).getDuyuruBaslik());
    holder.txtContext.setText(duyuruArrayList.get(position).getDuyuruContext());
    holder.txtYazar.setText(duyuruArrayList.get(position).getDuyuruYazar());
    holder.txtTime.setText(duyuruArrayList.get(position).getDuyuruTime());
    holder.txtDate.setText(duyuruArrayList.get(position).getDuyuruDate());

    holder.parentLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(mContext, activity_duyuru_update_screen.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra("baslik",duyuruArrayList.get(position).getDuyuruBaslik());
            intent.putExtra("context",duyuruArrayList.get(position).getDuyuruContext());
            intent.putExtra("yazar",duyuruArrayList.get(position).getDuyuruYazar());
            intent.putExtra("time",duyuruArrayList.get(position).getDuyuruTime());
            intent.putExtra("date",duyuruArrayList.get(position).getDuyuruDate());
            intent.putExtra("pid",duyuruArrayList.get(position).getPid());
            mContext.startActivity(intent);
        }
    });
}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    TextView txtBaslik,txtContext,txtYazar,txtTime,txtDate;
    RelativeLayout parentLayout;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        txtBaslik = itemView.findViewById(R.id.ac_cv_duyuru_baslik);
        txtContext = itemView.findViewById(R.id.ac_cv_duyuru_context);
        txtTime = itemView.findViewById(R.id.ac_cv_duyuru_time);
        txtYazar = itemView.findViewById(R.id.ac_cv_duyuru_yazar);
        txtDate = itemView.findViewById(R.id.ac_cv_duyuru_date);
        parentLayout = itemView.findViewById(R.id.ac_items_layout);
    }
}
私有上下文mContext;
私人ArrayList duyuruArrayList;
公共回收器适配器(上下文mContext,ArrayList duyuruArrayList){
this.mContext=mContext;
this.duyuruArrayList=duyuruArrayList;
}
@非空
@凌驾
public RecyclerAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
View=LayoutInflater.from(parent.getContext()).flate(R.layout.duyuru\u items\u布局,parent,false);
返回新的ViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,final int位置){
holder.txtBaslik.setText(duyuruArrayList.get(position.getDuyuruBaslik());
holder.txtContext.setText(duyuruArrayList.get(position.getDuyuruContext());
holder.txtYazar.setText(duyuruArrayList.get(position.getDuyuruYazar());
holder.txtTime.setText(duyuruArrayList.get(position.getDuyuruTime());
holder.txtDate.setText(duyuruArrayList.get(position.getDuyuruDate());
holder.parentLayout.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(mContext,activity\u duyuru\u update\u screen.class);
intent.setFlags(intent.FLAG\u活动\u新任务);
intent.putExtra(“baslik”,duyuruArrayList.get(position.getDuyuruBaslik());
intent.putExtra(“context”,duyuruArrayList.get(position.getDuyuruContext());
intent.putExtra(“yazar”,duyuruArrayList.get(position.getDuyuruYazar());
intent.putExtra(“time”,duyuruArrayList.get(position.getDuyuruTime());
intent.putExtra(“date”,duyuruArrayList.get(position.getDuyuruDate());
intent.putExtra(“pid”,duyuruArrayList.get(position.getPid());
mContext.startActivity(意图);
}
});
}
@凌驾
public int getItemCount(){
返回duyuruArrayList.size();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
text查看txtBaslik、txtContext、txtYazar、txtTime、txtDate;
相对亲子布局;
公共视图持有者(@NonNull View itemView){
超级(项目视图);
txtBaslik=itemView.findviewbyd(R.id.ac\u cv\u duyuru\u baslik);
txtContext=itemView.findViewById(R.id.ac\u cv\u duyuru\u context);
txtTime=itemView.findViewById(R.id.ac\u cv\u duyuru\u time);
txtYazar=itemView.findViewById(R.id.ac\u cv\u duyuru\u yazar);
txtDate=itemView.findviewbyd(R.id.ac\u cv\u duyuru\u日期);
parentLayout=itemView.findviewbyd(R.id.ac\u items\u layout);
}
}

使用ItemTouchHelper类

ItemTouchHelper itemTouchHelper = new ItemTouchHelper(newItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT|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) {
              notifyItemRemoved(getAdapterPosition());
              notifyItemRangeChanged(getAdapterPosition(), MainActivity.arrList.size());

        }
    });

    itemTouchHelper.attachToRecyclerView(recyclerView);

使用ItemTouchHelper类

ItemTouchHelper itemTouchHelper = new ItemTouchHelper(newItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT|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) {
              notifyItemRemoved(getAdapterPosition());
              notifyItemRangeChanged(getAdapterPosition(), MainActivity.arrList.size());

        }
    });

    itemTouchHelper.attachToRecyclerView(recyclerView);

哦,对不起,我没看到。您可以使用notifyItemRemoved(getAdapterPosition());notifyItemRangeChanged(getAdapterPosition(),MainActivity.arrList.size());哦,对不起,我没看到。您可以使用notifyItemRemoved(getAdapterPosition());诺蒂夫