単純なリスト ビューの BaseAdapter に問題があります。リストビューでのパフォーマンスを向上させるために、 getView メソッドでホルダーを使用したいと考えています。しかし、ホルダーを使用すると、アイテムがすべて混同されます。リストビュー内のアイテムの数は正しいですが、順序が間違っています。前もって感謝します。これは getView 内の私のコードです:
ChatRowView holder;
ChatActivity.chatObject currentChatObject = getItem(position);
if(convertView == null)
{
holder = new ChatRowView();
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_row, null);
holder.chatComponent = new ChatComponent(mContext, currentChatObject.isLeft, currentChatObject.extraType, currentChatObject.message);
holder.chatComponent.tvName.setText(currentChatObject.name);
holder.chatComponent.tvTime.setText(currentChatObject.time);
load("some picture", holder.chatComponent.ivUser);
if(currentChatObject.extraType != ExtraContentView.eChatExtraContentType.NONE)
{
if(currentChatObject.extraType != ExtraContentView.eChatExtraContentType.GAME)
{
App.loadImage(teamsBaseUrl + "132" + "_70x70.png", holder.chatComponent.extraContentView.ivTeamLogo);
}
else
{
App.loadImage(teamsBaseUrl + "132" + "_70x70.png", holder.chatComponent.extraContentView.ivHomeTeamLogo);
App.loadImage(teamsBaseUrl + "132" + "_70x70.png", holder.chatComponent.extraContentView.ivAwayTeamLogo);
}
}
((RelativeLayout)convertView).addView(holder.chatComponent);
convertView.setTag(holder);
extraButtonsListener(holder.chatComponent);
}
else
{
holder = (ChatRowView)convertView.getTag();
}
return convertView;