本文介绍了如何在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中实现部分可见的下一个项目
发布评论