提问者:小点点

获取Firebase Recycler视图持有者的密钥,以便在长按时删除特定帖子


我有一个循环视图持有人,其中包含对帖子的评论,我需要删除长按的评论,但为此我需要该位置的评论键。

在我的bindview持有者中,我有如下代码,但它在getref()方法上显示错误,无法重新使用方法getref(int)

       @Override
       public void onBindViewHolder(final CommentViewHolder holder, final int position) {

        final Comm comment = mComments.get(position);


        final DatabaseReference postRef = getRef(position);
        final String postKey = postRef.getKey(); 

如果我得到帖子密钥,我可以删除comment.How我可以得到那个特定评论的密钥吗?


共1个答案

匿名用户

这个想法是您必须从适配器回调到调用片段/活动,并从列表中删除注释并调用适配器上的通知数据设置更改()。

回调将有一个int位置作为参数,可用于获取给定位置的对象并从列表中删除。

//your constructor for adapter

  private OnClickViewItemListener mItemListener;
     private List<Comm> listData;
        public YourAdapter(List<Comm> listData, OnClickViewItemListener mItemListener) {
            this.listData = listData;
            this.mContext = mContext;
            this.mItemListener = mItemListener;
        }

您的适配器浏览者应该有以下更改。

 public CommentViewHolder(View itemView) {
        super(itemView);
        mButton = (Button)itemView.findViewById(R.id.btDelete);
        mButton.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(final View v) {
                mItemListener.onClickViewItem(v,getAdapterPosition());
                return false;
            }
        });
    }

现在在您的活动或片段中实现OnClickViewItemListener并做您想做的任何事情。

 @Override
    public void onClickViewItem(View view, int position) {
        //here handle the item click listener
        // remove the comment here and notify adapter
       commList.remove(position);

    }