【发布时间】:2014-06-20 11:46:03
【问题描述】:
我需要在从 mysqli 游标生成的列表视图中的第 n 个元素之后放置一个分隔符。我创建了尝试这样做的自定义适配器,如下所示:
MyAdapter extends CursorAdapter {
...
blablabla
yadayadayada
...
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view;
int pos = cursor.getPosition();
int beforeLast = GameData.totalPlayers-1;
if (pos == beforeLast) {
view = mInflater.inflate(R.layout.player_details_divider, parent, false);
} else {
view = mInflater.inflate(R.layout.player_details, parent, false);
}
return view;
}
}
所以你可以看到它应该为位置totalPlayers-1 上的元素膨胀不同的视图。当数字足够小时效果很好:1到6。但是当它更大时它就停止工作了。
我尝试调试这个东西,我注意到它呈现了 6 个项目 - 这是屏幕上适合多少列表元素 - 并通过循环 6 次递增 pos 到 5。然后它停止。当我开始滚动列表时,它再次运行循环,将 pos 增加到 6,然后停止。无论有多少元素,它永远不会将 pos 增加到 7(尽管所有数据都存在于列表中,所以 cursor 必须迭代到末尾)。
任何想法为什么它会这样?我不理解/做错了什么?
【问题讨论】:
标签: java android listview android-cursor divider