【发布时间】:2021-02-27 13:57:35
【问题描述】:
我正在开发一个几乎完成的 SMS 应用程序,但我在使用新 SMS 更新 Recyclerview 时遇到问题,在我关闭并打开我的应用程序之前,新 SMS 不会显示在列表中 我尝试了很多解决方案,但我无法使其工作,请帮助 提前致谢 我正在扩展 Recyvlerview.Adapter 的 ConverstaionDetailsItemAdapter.java 类
public class ConverstaionDetailsItemAdapter extends
RecyclerView.Adapter<ConversationDetailsItemViewHolder> {
Conversation conversation;
List<Message> messages;
Context mContext;
public List<Message> getMessages() {
return messages;
}
public void setMessages(List<Message> messages) {
this.messages = messages;
}
public ConverstaionDetailsItemAdapter(List<Message> pMessages, Context context, Conversation
pConversation) {
this.messages = pMessages;
mContext = context;
this.conversation = pConversation;
}
@Override
public ConversationDetailsItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ConversationDetailsItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_conversations_details_item, parent, false), mContext,conversation);
}
@Override
public void onBindViewHolder(final ConversationDetailsItemViewHolder holder, final int position) {
Message message = messages.get(position);
if (message != null) {
holder.setConversationItem(message, position);
}
}
@Override
public int getItemCount() {
return (messages == null) ? 0 : messages.size();
}
@Override
public int getItemViewType(int position) {
return position;
}
}
我的 ViewHolder 类
public class ConversationDetailsItemViewHolder extends RecyclerView.ViewHolder {
Context mContext;
Conversation conversation;
ImageView imageView;
public static TextView txtContactName, txtMessage, txtMessageTime;
private RelativeLayout rltRoot;
public ConversationDetailsItemViewHolder(View view, Context context, Conversation pConversation) {
super(view);
mContext = context;
conversation = pConversation;
rltRoot = view.findViewById(R.id.rlt_conversation_details_item_root);
txtContactName = view.findViewById(R.id.txt_contact_name);
txtMessageTime = view.findViewById(R.id.text_message_time);
txtMessage = view.findViewById(R.id.text_message);
}
public void setConversationItem(Message item, final int position) {
if(item.getType().equals("1")) {
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
txtMessage.setLayoutParams(params);
txtMessage.setBackgroundResource(R.drawable.rounded_rectangle_incoming);
} else {
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
txtMessage.setLayoutParams(params);
txtMessage.setBackgroundResource(R.drawable.rounded_rectangle);
}
txtMessage.setText(item.getBody()+"\n");
}
}
【问题讨论】:
标签: java android-studio android-recyclerview sms