如何通过其位置获得孩子?

时间:2016-10-05 19:13:25

标签: android firebase firebase-realtime-database

我正在使用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 个答案:

答案 0 :(得分:0)

我认为你必须在你的适配器类中添加删除和添加方法。

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);

    }
}

}