gpt4 book ai didi

android - 如何在水平回收 View 中获取当前位置?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:24:07 25 4
gpt4 key购买 nike

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

这是我的 Activity

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

这使得水平回收器 View 一次显示和滚动整个项目,这样你就不会卡在中间,一半可见,另一半不可见

关于android - 如何在水平回收 View 中获取当前位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43766324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com