gpt4 book ai didi

java - 多个充气机上的 ViewHolder

转载 作者:太空宇宙 更新时间:2023-11-04 14:31:11 28 4
gpt4 key购买 nike

我在 ListView 上遇到了 View 持有者的充气问题。实现 Viewholder 后,充气机会出错,因此消息显示错误。 (在图 10 中,消息不是来 self ,而且每当我滚动时,错误的消息都会发生变化,我变成 7,4 或任何其他,就好像它随机使用充气机一样)

我有 2 种不同的充气机,一种用于显示他们的个人资料图像,另一种用于我。

这是代码:

    @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)内,我认为这不会导致问题。

感谢您的帮助

enter image description here

最佳答案

由于您在这里使用两种不同的布局,因此您应该使用 Android 的机制来正确重用 ConvertView。

在此处查看教程:

http://antoine-merle.com/blog/2013/06/11/making-a-multiple-view-type-adapter-with-annotations/

在您的情况下,您只有两种类型的 View :“我的”和“他们的”,因此重写 getViewTypeCount() 方法以返回 2,并 getItemViewType() 根据位置返回正确的类型。

关于java - 多个充气机上的 ViewHolder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26122525/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com