android – 如何在水平Recyclerview中获取当前位置?

android – 如何在水平Recyclerview中获取当前位置?,第1张

概述我有一个recyclerview和一个imageview,我想在滚动上更改imageview图像,但我不知道如何获取当前位置,然后从列表中获取我的图像然后将其加载到Picasso到imageview! 这是我的代码: <ImageView android:layout_width="match_parent" android:layout_height="match 我有一个recyclervIEw和一个imagevIEw,我想在滚动上更改imagevIEw图像,但我不知道如何获取当前位置,然后从列表中获取我的图像然后将其加载到Picasso到imagevIEw!

这是我的代码:

<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();

这使得水平回收器视图能够显示并滚动整个项目,因此您不会陷入中间,如半可见,另一半看不见

总结

以上是内存溢出为你收集整理的android – 如何在水平Recyclerview中获取当前位置?全部内容,希望文章能够帮你解决android – 如何在水平Recyclerview中获取当前位置?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1134325.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存