gpt4 book ai didi

java - Firestore RecyclerView 刷卡 View 删除文档

转载 作者:行者123 更新时间:2023-12-02 09:14:44 28 4
gpt4 key购买 nike

我在 Fragment 的 onStart() 方法中有以下代码:

final FirestoreRecyclerAdapter adapter = new FirestoreRecyclerAdapter<NewTask, TasksViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final TasksViewHolder holder, final int position, @NonNull NewTask model) {
holder.setTaskTitle(model.getTaskTitle());
holder.setTaskPrivacy(model.isTaskPrivacy());
holder.setTaskColor(model.getTaskColor());

//<----- ONCLICK OF A TASK ----->
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final DocumentReference ref = getSnapshots().getSnapshot(position).getReference();
Toast.makeText(getActivity(), ref.getId(), Toast.LENGTH_SHORT).show();
new ItemTouchHelper(new ItemTouchHelper.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) {
Toast.makeText(getActivity(), ref.getId(), Toast.LENGTH_SHORT).show();
}
}).attachToRecyclerView(twoRecyclerView);
}
});
}

使用提供的代码会发生这种情况:

当我单击 CardView 项目时,会弹出该项目的 Firestore 文档 ID 的 Toast 消息。但是,当我滑动该项目时,会弹出先前单击的第一个项目的 Toast 消息。因此,如果我尝试删除 onSwipe 方法中的项目,我将不断删除第一个选定的项目。

我的问题是:如何删除 onSwipe 中我想要的项目?

我的主要目标是能够在向右或向左滑动时删除 CardView 项目,而不必在单击该项目时删除。

最佳答案

经过几个小时的翻页后,我发现在 Fragment 中设置“滑动以从 Firestore 功能删除 CardView 项目”的最佳方法是创建一个新的 Adapter Java 类。

public class NoteAdapter extends FirestoreRecyclerAdapter<Note, NoteAdapter.NoteHolder> {

public NoteAdapter(@NonNull FirestoreRecyclerOptions<Note> options) {
super(options);
}

@Override
protected void onBindViewHolder(@NonNull NoteHolder holder, int position, @NonNull Note model) {
holder.textViewTitle.setText(model.getTitle());
holder.textViewDescription.setText(model.getDescription());
holder.textViewPriority.setText(String.valueOf(model.getPriority()));
}

@NonNull
@Override
public NoteHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.note_item,
parent, false);
return new NoteHolder(v);
}

public void deleteItem(int position) {
getSnapshots().getSnapshot(position).getReference().delete();
}

class NoteHolder extends RecyclerView.ViewHolder {
TextView textViewTitle;
TextView textViewDescription;
TextView textViewPriority;

public NoteHolder(View itemView) {
super(itemView);
textViewTitle = itemView.findViewById(R.id.text_view_title);
textViewDescription = itemView.findViewById(R.id.text_view_description);
textViewPriority = itemView.findViewById(R.id.text_view_priority);
}
}

关于java - Firestore RecyclerView 刷卡 View 删除文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59088255/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com