我想创建一个自定义ListView(或类似),其行为类似于封闭(循环)的:
这在概念上听起来很简单,但显然,没有直接的方法来做到这一点.谁能指出我正确的解决方案?谢谢 !
我已经收到一个答案(来自Streets Of Boston的Android开发者谷歌团体),但听起来有些丑陋:) -
我这样做是通过创建自己的列表适配器(从BaseAdapter子类).
我编写了自己的列表适配器,其getCount()方法返回一个HUUUUGE编号.
如果选择项'x',则此项对应于适配器位置='adapter.getCount()/ 2 + x'
对于我的适配器的方法getItem(int position),我查看我的数组备份适配器并获取索引上的项目:(position-getCount()/ 2)%myDataItems.length
你需要做一些更"特殊"的东西才能使它完全正常工作,但你明白了.
原则上,它仍然可以到达列表的结尾或开头,但如果你将getCount()设置为大约一百万左右,这很难做到:-)
我试图让我的RecyclerView循环回到我的列表的开头.
我已经搜遍了整个互联网,并设法检测到我的列表何时到达,但是我不确定从哪里开始.
这是我目前用于检测列表末尾的内容(在此处找到):
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
visibleItemCount = mLayoutManager.getChildCount();
totalItemCount = mLayoutManager.getItemCount();
pastVisiblesItems = mLayoutManager.findFirstVisibleItemPosition();
if (loading) {
if ( (visibleItemCount+pastVisiblesItems) >= totalItemCount) {
loading = false;
Log.v("...", ""+visibleItemCount);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当滚动到最后,我希望在从列表顶部显示数据或滚动到列表顶部时可以看到视图我将从列表底部显示数据.
例如:
View1 View2 View3 View4 View5
View5 View1 View2 View3 View4
我想自动滚动一个水平滚动视图,当它到达最后一个imageview时,在linearlayout中包含很多imageview,第一个出现,依此类推
我发现这个代码 符合我的需要但是当我添加了自动滚动时,圆形功能将无法工作:当到达最后一个imageview时,第一个不会出现
这是我的代码:
slider = (RelativeLayout)findViewById(R.id.slider);
RelativeLayout container = (RelativeLayout) findViewById(R.id.slider);
scrollView = new PSInfiniteScrollView(this,new PSSize(120,120));
for (int i = 0; i < 10; i++) {
MyCloneableView img = new MyCloneableView(this);
img.setId(i + 20);
img.setImageResource(R.drawable.ic_launcher);
img.setScaleType(ImageView.ScaleType.FIT_XY);
img.setBackgroundColor(c[i]);
img.setTag(c[i]);
scrollView.addItem(img);
}
container.addView(scrollView);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
doLoop();
}
});
t.start();
Run Code Online (Sandbox Code Playgroud)
这里的doLoop方法:
private void doLoop(){
do {
scrollView.scrollBy(2, 0);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
scrollView.scrollBy(2, 0);
try …Run Code Online (Sandbox Code Playgroud) 假设我们有以下一组项目视图:
View1 -> View2 -> View3 -> ... -> View(n-1) -> View(n)
Run Code Online (Sandbox Code Playgroud)
在经典的RecyclerView上,View1将位于第一个位置,View(n)位于最后一个位置.现在我想制作那个循环,所以在最后一个位置之后我们再次滚动到第一个位置:
View1 -> View2 -> View3 -> ... -> View(n-1) -> View(n) -> View1 -> View2 -> ...
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,但我不确定如何在View(n)之后完成"重置".任何建议都会非常有用.谢谢.