如何在RecyclerView中实现部分可见的下一个项目

编程入门 行业动态 更新时间:2024-10-05 09:30:54
本文介绍了如何在RecyclerView中实现部分可见的下一个项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用onFling一次滚动一个项目,并且只希望一个项目在页面上完全可见,而下一个项目只能部分可见.

I'm using onFling to scroll one item at a time and want only one item to be fully visible on the page while next item to be visible partially.

我想要这个,如何在RecyclerView中实现.这是适配器代码,只是代替了cardView(如图所示),它是imageView:

I want to this, how can I achieve this in RecyclerView. Here is the adapter code, just in place of cardView(which is shown in image), it's imageView:

public class SimpleItemRecyclerViewAdapter extends RecyclerView.Adapter<SimpleItemRecyclerViewAdapter.ViewHolder> { private final ArrayList<Movie> mValues; public SimpleItemRecyclerViewAdapter(ArrayList<Movie> items) { mValues = items; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.movie_list_content, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { holder.mItem = mValues.get(position); Context context = holder.imageView.getContext(); String logo = mValues.get(position).getPosterPath(); Picasso.with(context).load(logo).into(holder.imageView); } @Override public int getItemCount() { return mValues.size(); } public class ViewHolder extends RecyclerView.ViewHolder { public final View mView; public ImageView imageView; public Movie mItem; MainActivity mainActivity = new MainActivity(); public ViewHolder(View view) { super(view); mView = view; imageView = (ImageView) view.findViewById(R.id.image_movie_poster); android.view.ViewGroup.LayoutParams params = imageView.getLayoutParams(); params.height = (int) (mainActivity.height * 0.7); imageView.setLayoutParams(params); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(view.getContext(), "Clicked", Toast.LENGTH_SHORT).show(); } }); } @Override public String toString() { return "Blah"; } } }

推荐答案

这适用于我的水平recyclerview.您可以更改为垂直布局管理器.

This works for my horizontal recyclerview. You could just change to vertical layout manager.

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); final SnapHelper snapHelper = new PagerSnapHelper(); snapHelper.attachToRecyclerView(recyclerView); recyclerView.post(new Runnable() { @Override public void run() { recyclerView.setAdapter(new TestAdapter()); } }); } private class TestAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int i) { final View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.test_card, parent, false); int width = recyclerView.getWidth(); ViewGroup.LayoutParams params = view.getLayoutParams(); params.width = (int)(width * 0.8); view.setLayoutParams(params); return new TestViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) { TestViewHolder holder = (TestViewHolder) viewHolder; holder.numText.setText(((Integer) i).toString()); } @Override public int getItemCount() { return 20; } }

更多推荐

如何在RecyclerView中实现部分可见的下一个项目

本文发布于:2023-11-28 04:22:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1640942.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:项目   如何在   RecyclerView

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!