有没有什么简单的方法可以让LinearLayoutManager变成一个圆圈(在圆圈中重复项目)?
我对它进行了调查,发现只有一种方法可以制作自己的自定义LayoutManager,所以找到一种代码更少的方法会很酷
发布于 2017-08-01 07:06:11
首先要做的是更改适配器的getItemCount()方法以返回Integer.MAX_VALUE。这实际上不是无限的,但它超过了20亿,所以我怀疑没有人会滚动到那么远。
接下来,无论何时从数据源检索项,都不要只使用position。相反,使用position % dataSource.size()...这将在用户滚动时重复您的项目。
下面是一个例子:
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);
}
}
}

https://stackoverflow.com/questions/45405562
复制相似问题