我有一个循环视图持有人,其中包含对帖子的评论,我需要删除长按的评论,但为此我需要该位置的评论键。
在我的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我可以得到那个特定评论的密钥吗?
这个想法是您必须从适配器回调到调用片段/活动,并从列表中删除注释并调用适配器上的通知数据设置更改
()。
回调将有一个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);
}