这是我的代码:
<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中获取当前位置?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)