我正在使用RecyclerView并使用只有一个textView的自定义行,在第一次调用Adapter时,textView在onBindViewHolder中正确设置,第二次插入onBindViewHolder成功调用,并且要设置的文本也可用但是当我在textview上设置了text,它在recyclerview上显示一个空白行。它将占用文本的空间但不显示文本,在进一步插入时会发生同样的事情,任何想法为什么会发生这种情况?
public class MessagesAdapter extends RecyclerView.Adapter<MessagesAdapter.ViewHolder> {
private ArrayList<MessagesData> mDataset;
private Context context;
public MessagesAdapter(Context context, ArrayList<MessagesData> myDataset) {
this.mDataset=myDataset;
this.context=context;
}
public class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView textViewMsg;
public TextView textViewDay;
public TextView textViewTime;
public ViewHolder(View view) {
super(view);
textViewMsg = (TextView) view.findViewById(R.id.mes);
}
}
// Create new views (invoked by the layout manager)
@Override
public MessagesAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.mesage, parent, false);
// set the view's size, margins, paddings and layout parameters
ViewHolder vh = new ViewHolder(v);
return vh;
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Log.d("here",mDataset.get(position).getMessage());
holder.textViewMsg.setText(mDataset.get(position).getMessage());
}
// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return mDataset.size();
}
}
登录onBindViewHolder会在每次插入时显示正确的结果,但不会设置第二次插入的文本。
在这张图片中,你好,你是我发送的第一封邮件,之后我发了三条消息,因此第一条消息下方留空了。
答案 0 :(得分:0)
在将新项目插入RecyclerView后,尝试在适配器上使用 notifyDataSetChanged()。
答案 1 :(得分:0)
对于这个愚蠢的问题感到抱歉,正如@sanoop在评论中说的那样,我只需将所有消息滚动到现在。