微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个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();

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

原文地址:https://www.jb51.cc/android/313767.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐