这是我的代码:<ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/main_background" android:background="#80000000" android:scaleType="centerCrop" /> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="400dp" android:layout_centerInParent="true" android:layout_marginBottom="30dp" android:layout_marginTop="30dp"/>我的适配器:public class Place_Adapter extends RecyclerView.Adapter<Place_View_Holder> { private List<Place> objects; private Activity context; public Place_Adapter(List<Place> objects,Activity context){ this.context=context; this.objects=objects; } @Override public Place_View_Holder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.place_item, parent, false); Place_View_Holder place_view_holder=new Place_View_Holder(v); return place_view_holder; } @Override public void onBindViewHolder(Place_View_Holder holder, int position) { Picasso.with(context) .load(objects.get(position).getItem_Image()) .placeholder(R.mipmap.image) .error(R.mipmap.image) .into(holder.image); holder.place_name.setText(objects.get(position).getPName()); holder.place_in_map.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { context.startActivity(new Intent(context, MapsActivity.class)); } }); } @Override public int getItemCount() { return objects.size(); }}这是我的活动mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == RecyclerView.SCROLL_STATE_IDLE) { ////here i want to change imageview image } } });解决方案 SnapHelper mSnapHelper = new PagerSnapHelper(); mSnapHelper.attachToRecyclerView(recyclerView); LayoutManager recylerViewLayoutManager = new LayoutManager(view.getContext(), LinearLayoutManager.HORIZONTAL, false) ;; recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == RecyclerView.SCROLL_STATE_DRAGGING) { //Dragging } else if (newState == RecyclerView.SCROLL_STATE_IDLE) { review_position = recylerViewLayoutManager.findFirstVisibleItemPosition(); /* Here load the Image to image view with picaso */ Picasso.with(itemView.getContext()) .load(url) .into(yourImageView, new Callback() { @Override public void onSuccess() { } @Override public void onError() { } }); } } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int firstVisibleItem = recylerViewLayoutManager.findFirstVisibleItemPosition(); /* Log.e ("VisibleItem", String.valueOf(firstVisibleItem));*/ } });这里SnapHelper mSnapHelper = new PagerSnapHelper();这使得水平回收站视图可以一次显示并滚动整个项目,因此您不会像一半可见和一半不可见那样陷于中间I have a recyclerview and an imageview, I want to change imageview image on scroll but I don't know how to get the current position and by it get my image from the list then load it with Picasso to imageview!here is my code:<ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/main_background" android:background="#80000000" android:scaleType="centerCrop" /> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="400dp" android:layout_centerInParent="true" android:layout_marginBottom="30dp" android:layout_marginTop="30dp"/>My Adapter : public class Place_Adapter extends RecyclerView.Adapter<Place_View_Holder> { private List<Place> objects; private Activity context; public Place_Adapter(List<Place> objects,Activity context){ this.context=context; this.objects=objects; } @Override public Place_View_Holder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.place_item, parent, false); Place_View_Holder place_view_holder=new Place_View_Holder(v); return place_view_holder; } @Override public void onBindViewHolder(Place_View_Holder holder, int position) { Picasso.with(context) .load(objects.get(position).getItem_Image()) .placeholder(R.mipmap.image) .error(R.mipmap.image) .into(holder.image); holder.place_name.setText(objects.get(position).getPName()); holder.place_in_map.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { context.startActivity(new Intent(context, MapsActivity.class)); } }); } @Override public int getItemCount() { return objects.size(); }}And this is my ActivitymRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == RecyclerView.SCROLL_STATE_IDLE) { ////here i want to change imageview image } } }); 解决方案 SnapHelper mSnapHelper = new PagerSnapHelper(); mSnapHelper.attachToRecyclerView(recyclerView); LayoutManager recylerViewLayoutManager = new LayoutManager(view.getContext(), LinearLayoutManager.HORIZONTAL, false) ;; recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == RecyclerView.SCROLL_STATE_DRAGGING) { //Dragging } else if (newState == RecyclerView.SCROLL_STATE_IDLE) { review_position = recylerViewLayoutManager.findFirstVisibleItemPosition(); /* Here load the Image to image view with picaso */ Picasso.with(itemView.getContext()) .load(url) .into(yourImageView, new Callback() { @Override public void onSuccess() { } @Override public void onError() { } }); } } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int firstVisibleItem = recylerViewLayoutManager.findFirstVisibleItemPosition(); /* Log.e ("VisibleItem", String.valueOf(firstVisibleItem));*/ } });Here SnapHelper mSnapHelper = new PagerSnapHelper();This makes the horizontal recycler view to show and scroll entire one item at time so you cannot get stuck in middle like half visible and another half invisible 这篇关于如何在卧式recyclerview中获取当前位置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 09-02 19:46