我对 listviews 上的 viewholder 有一个充气问题。实现了viewholder,它得到错误的inflater,所以消息显示错误。(在图像 10。消息不是来自我,而且每当我滚动时错误消息都会发生变化,我变成 7,4 或任何其他,就好像它随机使用充气机一样)
我有 2 种不同的充气机,一种用于显示他们的 profileImage,另一种用于我。
这是代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
if(messageList.get(position).getSenderRealId() != relevantId)
{
convertView = getLayoutInflater().inflate(R.layout.message_detail_row_my_inflater, parent, false);
}else{
convertView = getLayoutInflater().inflate(R.layout.message_detail_row_their_inflater, parent, false);
}
viewHolder = new ViewHolder();
viewHolder.messageDateText = (CustomFontTextView) findViewById(R.id.messageDateText);
viewHolder.profileImageView = (SquareImageView) findViewById(R.id.profileImageView);
viewHolder.messageBubbleLayout = (LinearLayout) convertView.findViewById(R.id.messageBubbleLayout);
viewHolder.messageText = (CustomFontTextView) viewHolder.messageBubbleLayout.findViewById(R.id.message_text);
viewHolder.messageHourText = (CustomFontTextView) viewHolder.messageBubbleLayout.findViewById(R.id.messageHourText);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.messageText.setText(messageList.get(position).getMessage());
viewHolder.messageHourText.setText(Constants.hourFormat.format(messageList.get(position).getSendTime()));
return convertView;
}
和 viewHolderClass :
static class ViewHolder {
CustomFontTextView messageDateText;
SquareImageView profileImageView;
LinearLayout messageBubbleLayout;
CustomFontTextView messageText;
CustomFontTextView messageHourText;
}
目前,我只设置了 messageHour 和 messageText,但除图像之外的所有组件都在我认为不会导致问题的线性布局(messageBubbleLayout)内。
谢谢你的帮助