在一个继承类里面,有一个viewpage和RecyclerView,它们俩都是共用一个list,RecyclerView点击其中一个list图片地址,viewpage怎样同时显示同一个list地址
时间: 2024-01-21 17:04:46 浏览: 106
你可以在RecyclerView的点击事件中获取到被点击的图片地址,并将该地址作为参数传递给ViewPager所在的Activity或Fragment。然后在ViewPager中,你可以通过接收传递过来的图片地址,找到这个地址在共用的list中对应的位置,然后将ViewPager的当前项设置为该位置,从而实现同时显示同一个list地址的效果。
具体实现可以参考以下代码:
RecyclerView的点击事件中:
```java
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
return false;
}
@Override
public void onTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
// 获取被点击的图片地址
String imageUrl = ...;
// 将图片地址作为参数传递给ViewPager所在的Activity或Fragment
Intent intent = new Intent(getActivity(), ViewPagerActivity.class);
intent.putExtra("image_url", imageUrl);
startActivity(intent);
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});
```
ViewPager所在的Activity或Fragment中:
```java
public class ViewPagerActivity extends AppCompatActivity {
private ViewPager viewPager;
private List<String> imageUrlList;
private String currentImageUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager);
// 获取共用的list
imageUrlList = ...;
// 获取传递过来的图片地址
currentImageUrl = getIntent().getStringExtra("image_url");
// 找到当前图片地址在共用list中的位置
int currentPosition = imageUrlList.indexOf(currentImageUrl);
// 初始化ViewPager
viewPager = findViewById(R.id.viewPager);
viewPager.setAdapter(new ImagePagerAdapter(this, imageUrlList));
viewPager.setCurrentItem(currentPosition);
}
}
```
ImagePagerAdapter的实现:
```java
public class ImagePagerAdapter extends PagerAdapter {
private Context context;
private List<String> imageUrlList;
public ImagePagerAdapter(Context context, List<String> imageUrlList) {
this.context = context;
this.imageUrlList = imageUrlList;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
// 使用imageUrlList中对应位置的图片地址来加载图片
Glide.with(context).load(imageUrlList.get(position)).into(imageView);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return imageUrlList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
}
```
阅读全文