正如标题所说,我的适配器的getView方法有时会跳过一个位置。我还没能确定它发生的原因,但是从适配器上放置断点我注意到getItemViewType被调用但getView并不总是被调用。我的理解是调用getItemViewType然后调用getView,但也许我错过了什么?
我重写了getViewTypeCount,getItemViewType,getCount和getItem
@Override
public int getItemViewType(int position) {
return getItem(position).isMe() ? ME : OTHER;
}
@Override
public int getViewTypeCount() {
// Left or right bubble
return 2;
}
@Override
public int getCount() {
return messages.getCount();
}
@Override
public HsConversationMessageItem getItem(int position) {
// Reverse the order of the items since we want the newest items on the bottom
return messages.getItem(getCount() - position - 1);
}
应该发生的是为位置x调用getItemViewType,然后为同一位置调用getView。但有时getItemViewType被调用为位置x,跳过getView和getItemViewType再次被调用x + 1,其余的继续正常。对于它的价值,我不认为问题出在我的getView方法上,因为它没有被调用。
希望这是有道理的。感谢