我想创建一个自定义的 ListView (或类似的),它的行为就像一个封闭的(圆形):
- 向下滚动 - 到达最后一项后,第一个开始 (.., n-1, n, 1, 2, ..)
- 向上滚动 - 到达第一个项目后,最后一个开始 (.., 2, 1, n, n-1, ..)
这在概念上听起来很简单,但显然没有直接的方法可以做到这一点。谁能指出我正确的解决方案?谢谢 !
我已经收到了答案(来自 Streets Of Boston 在 Android-Developers google groups 上),但这听起来有点难看 :) -
我通过创建自己的列表适配器(从 BaseAdapter 继承)来做到这一点。
我编写了自己的列表适配器,使其 getCount() 方法返回一个 HUUUUGE 数字。
如果选择了item 'x',那么这个item对应于adapter position='adapter.getCount()/2+x'
对于我的适配器的方法 getItem(int position),我查看了支持适配器的数组并获取索引上的项目: (position-getCount()/2) % myDataItems.length
你需要做一些更“特殊”的东西才能让它正常工作,但你明白了。
原则上,仍然可以到达列表的末尾或开头,但是如果您将 getCount() 设置为大约一百万左右,这很难做到:-)