1
我試圖刪除火力地堡回收站適配器的項目,此代碼:火力地堡回收站適配器不顯示視圖屬性時removeValue
messageAdapter.getRef(position).removeValue();
這是我關於Firebase Recycler Adapter的代碼。它可以正常工作,當我刪除項目。 MessageViewHolder類:
public static class MessageViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener {
public TextView tvMessage;
public TextView tvDateSending;
public CircleImageView ivMessenger;
public LinearLayout linearLayout;
public MessageViewHolder(View v) {
super(v);
tvMessage = (TextView) itemView.findViewById(R.id.tvMessage);
tvDateSending = (TextView) itemView.findViewById(R.id.tvDateSending);
ivMessenger = (CircleImageView) itemView.findViewById(R.id.ivMessenger);
linearLayout= (LinearLayout) itemView.findViewById(R.id.llOneToOneChat);
v.setOnCreateContextMenuListener(this);
}
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
menu.add(0,1 , 0, "Edit");
menu.add(0, COPY, 0, "Copy");
menu.add(0, DELETE, 0, "Delete");
}
}
MessageAdapter類:
public class MessageAdapter extends FirebaseRecyclerAdapter<Message, MessageViewHolder>{
private Context context;
private long prevMessageTime=0;
public int position;
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
public MessageAdapter(Class<Message> modelClass, int modelLayout, Class<MessageViewHolder> viewHolderClass, DatabaseReference ref, Context context) {
super(modelClass, modelLayout, viewHolderClass, ref);
this.context = context;
}
@Override
protected void populateViewHolder(MessageViewHolder viewHolder, Message message, final int position) {
//do something
viewHolder.tvMessage.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
setPosition(position);
return false;
}
});
}
}
在活動,我重寫onContextItemSelected
@Override
public boolean onContextItemSelected(MenuItem item) {
int position = -1;
try {
position = messageAdapter.getPosition();
} catch (Exception e) {
// Log.d(TAG, e.getLocalizedMessage(), e);
return super.onContextItemSelected(item);
}
switch (item.getItemId()) {
case 1:
// do your stuff
break;
case 2:
// copy message
if (position!= -1){
ClipboardManager clipboard = (ClipboardManager) OneToOneConversationActivity.this.getSystemService(Context.CLIPBOARD_SERVICE);
String text = messageAdapter.getItem(position).getMessage();
ClipData clip = android.content.ClipData.newPlainText("Copied Text", text);
clipboard.setPrimaryClip(clip);
}
break;
case 3:
//delete message
if (position!= -1)
messageAdapter.getRef(position).removeValue();
break;
}
return super.onContextItemSelected(item);
}
如何使這一觀點從SCRE消失恩?
請發佈您的完整代碼..您在刪除時做了什麼.. –
@ArpitPatel我已更新我的問題。請幫助我! –