【问题标题】:How to get child by its position?如何通过它的位置得到孩子?
【发布时间】:2016-10-05 19:13:25
【问题描述】:

我将 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); 将其删除。

【问题讨论】:

标签: android firebase firebase-realtime-database


【解决方案1】:

我认为您必须向适配器类添加删除和添加方法。

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

    }
}

}

【讨论】:

    猜你喜欢
    • 2019-05-27
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多