显示单个项目的回收站视图

我正面临一个奇怪的错误,其中recyclerview只显示一个项目。 以下是我的recyclerview适配器的代码:

public class ChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { List<chat> chats; String username; final int My=0,Their=1; public ChatAdapter(List<chat> chats) { this.chats = chats; this.username = PushApp.getApp().getSPF().getStringData(Constants.ANAME); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { RecyclerView.ViewHolder viewHolder; LayoutInflater inflater = LayoutInflater.from(parent.getContext()); switch (viewType) { case My: View v1 = inflater.inflate(R.layout.my_chat_child, parent, false); viewHolder = new MyChatHolder(v1); break; case Their: View v2 = inflater.inflate(R.layout.their_chat_child, parent, false); viewHolder = new TheirMessageHolder(v2); break; default: View v = inflater.inflate(R.layout.my_chat_child, parent, false); viewHolder = new MyChatHolder(v); break; } return viewHolder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (holder.getItemViewType()) { case My: MyChatHolder myChatHolder = (MyChatHolder) holder; myChatHolder.setMyMessage(chats.get(position).getMessage()); break; case Their: TheirMessageHolder theirMessageHolder = (TheirMessageHolder) holder; theirMessageHolder.setTheirChat(chats.get(position).getFrom(), chats.get(position).getMessage()); break; } } @Override public int getItemViewType(int position) { if(username.equalsIgnoreCase(chats.get(position).getFrom())) return My; return Their; } @Override public int getItemCount() { return chats.size(); }} 

我已经在其他应用程序中使用此代码,并完美地工作。 我已经检查了聊天数据,这也是完美的。

这里是链接到git回购布局文件: 布局文件

不要使用match_parent作为项目视图的高度。 一个项目垂直填充整个屏幕,所以你不会看到另一个。

当您为recyclerview创buildrow.xml时,应该遵循以下这些事情:

  1. 总是使用“Wrap_content”高度的行,否则在“match_parent”它将占据整个屏幕的单一行。

  2. 你也可以在dp中取高度。