Android 像旋转木马一样,在RecyclerView中同时滚动多个项目
我想使用RecyclerView像一个旋转木马一样在屏幕上同时显示3个项目 首先,在屏幕上,它显示项目1、2和3。 当我滑动RecyclerView(像一个ViewPager)时,我想显示如下项目#4#5 et#6:Android 像旋转木马一样,在RecyclerView中同时滚动多个项目,android,android-recyclerview,android-viewpager,carousel,Android,Android Recyclerview,Android Viewpager,Carousel,我想使用RecyclerView像一个旋转木马一样在屏幕上同时显示3个项目 首先,在屏幕上,它显示项目1、2和3。 当我滑动RecyclerView(像一个ViewPager)时,我想显示如下项目#4#5 et#6: 第一屏 滚动后的屏幕 如何实现这个工作流?谢谢你的帮助 这是我的活动 公共类旋转木马活动{ 私人回收站; @凌驾 受保护的int getLayoutResourceId(){ 返回R.layout.carousel_活动; } @凌驾 受保护的无效设置视图() { re
- 第一屏
- 滚动后的屏幕
公共类旋转木马活动{
私人回收站;
@凌驾
受保护的int getLayoutResourceId(){
返回R.layout.carousel_活动;
}
@凌驾
受保护的无效设置视图()
{
recyclerView=(recyclerView)findViewById(R.id.recyclerView);
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
ArrayList items=新建ArrayList();
添加(新的CarouselItem());
添加(新的CarouselItem());
添加(新的CarouselItem());
添加(新的CarouselItem());
添加(新的CarouselItem());
添加(新的CarouselItem());
setLayoutManager(新的LinearLayoutManager(上下文,LinearLayoutManager.HORIZONTAL,false));
recyclerView.setHasFixedSize(true);
setAdapter(新的CarouselAdapter(上下文、活动、项));
}
}
我的适配器呢
公共类CarouselAdapter扩展了RecyclerView.Adapter{
受保护的ArrayList列表项;
受保护的语境;
受保护的活动;
充气机;
公共旋转木马(上下文,
活动,,
ArrayList(列表项)
{
this.context=上下文;
这个。活动=活动;
this.inflater=LayoutInflater.from(上下文);
this.listItems=listItems;
}
@凌驾
public int getItemCount()
{
返回listItems.size();
}
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,int-viewType)
{
视图v=充气机。充气(R.layout.carousel_项目,父项,false);
返回新项目持有人(v);
}
@凌驾
public void onBindViewHolder(RecyclerView.ViewHolder,最终int位置)
{
项目持有人项目持有人=(项目持有人)持有人;
itemHolder.itemView.getLayoutParams().width=ScreenHelper.getScreenWidthRatio(活动,33);
itemHolder.itemView.getLayoutParams().height=ScreenHelper.getScreenWidthRatio(活动,50);
itemHolder.itemView.setBackgroundColor((位置%2==0)?Color.RED:Color.BLUE);
内页=位置+1;
itemHolder.tvPage.setText(“+页);
}
受保护的静态类ItemHolder扩展了RecyclerView.ViewHolder
{
私有文本查看电视页面;
公共项目持有者(查看项目视图)
{
超级(项目视图);
tvPage=(TextView)itemView.findViewById(R.id.tv_页面);
}
}
}
我认为这会有帮助……我认为这会有帮助。。。
public class CarouselActivity extends BaseActivity {
private RecyclerView recyclerView;
@Override
protected int getLayoutResourceId() {
return R.layout.carousel_activity;
}
@Override
protected void setupViews()
{
recyclerView = (RecyclerView)findViewById(R.id.recyclerview);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<CarouselItem> items = new ArrayList<>();
items.add(new CarouselItem());
items.add(new CarouselItem());
items.add(new CarouselItem());
items.add(new CarouselItem());
items.add(new CarouselItem());
items.add(new CarouselItem());
recyclerView.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(new CarouselAdapter(context,activity,items));
}
}
public class CarouselAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
protected ArrayList<CarouselItem> listItems;
protected Context context;
protected Activity activity;
protected LayoutInflater inflater;
public CarouselAdapter(Context context,
Activity activity,
ArrayList<CarouselItem> listItems)
{
this.context = context;
this.activity = activity;
this.inflater = LayoutInflater.from (context);
this.listItems = listItems;
}
@Override
public int getItemCount()
{
return listItems.size();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View v = inflater.inflate(R.layout.carousel_item, parent, false);
return new ItemHolder(v);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position)
{
ItemHolder itemHolder = (ItemHolder)holder;
itemHolder.itemView.getLayoutParams().width = ScreenHelper.getScreenWidthRatio(activity,33);
itemHolder.itemView.getLayoutParams().height = ScreenHelper.getScreenWidthRatio(activity,50);
itemHolder.itemView.setBackgroundColor((position % 2 == 0 ) ? Color.RED : Color.BLUE);
int page = position + 1;
itemHolder.tvPage.setText("" + page);
}
protected static class ItemHolder extends RecyclerView.ViewHolder
{
private TextView tvPage;
public ItemHolder(View itemView)
{
super(itemView);
tvPage = (TextView)itemView.findViewById(R.id.tv_page);
}
}
}