Как получить ребенка по его положению?

Я использую Firebase с RecyclerView, я хотел бы получить ребенка с определенной позиции, чтобы удалить его. Я знаю , что я должен использовать запросorderBy, но мне нужно получить конкретного ребенка по его позиции.

Есть ли способ сделать это? Я только нашел способ получить количество детей с getChildrenCount()методом снимка, но не нашел что-то, передавая значение позиции.

Спасибо!.

    protected void populateViewHolder(final ReportViewHolder viewHolder, final Report report, int position) {

            viewHolder.txtTitle.setText(report.title);
            viewHolder.txtMessage.setText(report.message);
            viewHolder.txtDate.setText(report.date);
            viewHolder.txtuserName.setText(report.userName);

            viewHolder.btnDelete.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    String key = report.key;

                    Query myTopPostsQuery = mDatabaseReference.child("user-reports/"+userID).orderByKey().equalTo(report.key);
                    myTopPostsQuery.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                                snapshot.getRef().removeValue();
                            }
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });
                    mDatabaseReference.child("reports/"+ key).removeValue();
                }
            });

        }
    };

Я хочу использовать позициюpopulateViewHolder, чтобы получить дочернюю позицию, а затем удалить ее узел.
Теперь я добавил поле для отчета под названием key и использую orderByKey().equalTo(report.key);для его удаления.

1 ответ

  1. Я думаю, что вы должны добавить delete и добавить методы к классу адаптера.

    public class AllAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    
    List<Article> articleList = new ArrayList<>();
    Context context;
    public AllAdapter(Context context){
        this.context = context;
    }
    
    public void addItem(Article article){
        articleList.add(article);
        notifyDataSetChanged();
    }
    
    public void deleteItem(int position){
        articleList.remove(position);
        notiftyDateSetChanged(position);
    }
    
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_post_item,null);
        return new ArticleViewHolder(view);
    }
    
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    
    }
    
    @Override
    public int getItemCount() {
        return articleList.size();
    }
    
    class ArticleViewHolder extends RecyclerView.ViewHolder{
    
        public ArticleViewHolder(View itemView) {
            super(itemView);
    
        }
    }
    

    }