首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LinearLayoutManager -循环中的重复

LinearLayoutManager -循环中的重复
EN

Stack Overflow用户
提问于 2017-07-31 07:06:59
回答 1查看 400关注 0票数 0

有没有什么简单的方法可以让LinearLayoutManager变成一个圆圈(在圆圈中重复项目)?

我对它进行了调查,发现只有一种方法可以制作自己的自定义LayoutManager,所以找到一种代码更少的方法会很酷

EN

回答 1

Stack Overflow用户

发布于 2017-08-01 07:06:11

首先要做的是更改适配器的getItemCount()方法以返回Integer.MAX_VALUE。这实际上不是无限的,但它超过了20亿,所以我怀疑没有人会滚动到那么远。

接下来,无论何时从数据源检索项,都不要只使用position。相反,使用position % dataSource.size()...这将在用户滚动时重复您的项目。

下面是一个例子:

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RecyclerView recycler = (RecyclerView) findViewById(R.id.recycler);
        recycler.setAdapter(new MyAdapter());
    }

    private static class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {

        private final List<String> items;

        private MyAdapter() {
            items = new ArrayList<>();
            items.add("A");
            items.add("B");
            items.add("C");
            items.add("D");
        }

        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            View itemView = inflater.inflate(R.layout.itemview, parent, false);
            return new MyViewHolder(itemView);
        }

        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {
            String item = items.get(position % items.size());
            ((TextView) holder.itemView).setText(item);
        }

        @Override
        public int getItemCount() {
            return Integer.MAX_VALUE;
        }
    }


    private static class MyViewHolder extends RecyclerView.ViewHolder {

        public MyViewHolder(View itemView) {
            super(itemView);
        }
    }
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45405562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档