我有一个 recycler视图持有人由帖子的注释组成,我需要删除在长press上的评论,但是为此,我需要在位置的键。
在我的bindview持有器中,我具有下面的代码,但它在无法重新解析方法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();
如果我获得了帖子密钥,我可以删除评论。如何获得该特定评论的关键?
这个想法是,您必须从适配器进行回调以调用片段/活动,然后从列表中删除评论,并在适配器上调用 notifyDataSetChange
()。
回调将具有int position
作为参数,可用于在给定位置获取对象并从列表中删除。
//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);
}