我想使用ViewPager和Picasso将Imageslider添加到片段中。没有片段,imageslider可以完美运行,并且是根据this tutorial构建的。但是,当我想在片段中添加Java代码时,出现一条错误,表明上下文适配器(我想是?)无法应用于片段类。
这就是我所拥有的:
适配器:
public class ActueelAdapter extends PagerAdapter {
private Context context;
private String[] imageUrls;
ActueelAdapter(Context context, String[] imageUrls){
this.context=context;
this.imageUrls=imageUrls;
}
@Override
public int getCount() {
return imageUrls.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView=new ImageView(context);
Picasso.get()
.load(imageUrls[position])
.into(imageView);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View)object);
}
}
片段类:
public class ActueelFragment extends Fragment {
private String[] imageUrls = new String[]{
"https://www.google.nl/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png",
"https://www.youtube.com/yts/img/yt_1200-vfl4C3T0K.png",
};
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_actueel, null);
ViewPager viewPager = (ViewPager) v.findViewById(R.id.view_pager);
ActueelAdapter adapter = new ActueelAdapter(this, imageUrls);
viewPager.setAdapter(adapter);
return v;
}
}
错误位于片段类(this, imageUrls);
的这一行。
谢谢您的帮助。
编辑:是否有可能将Imageslider添加到片段?
答案 0 :(得分:0)
使用getContext()代替该行中的此代码。您的构造函数需要上下文而不是片段实例。
答案 1 :(得分:0)
另一个答案很接近。
不应在片段中使用this
,而应使用getActivity()
编辑: 我建议使用Glider代替Picasso。
答案 2 :(得分:0)
您必须在实例化适配器对象时传递正确的上下文。由于您的片段位于活动内部,因此上下文将是该特定活动。 只需使用getActivity()作为上下文。如果片段托管在FragmentActivity内部,则需要使用getContext()。 因此只需使用。
ActueelAdapter adapter = new ActueelAdapter(getActivity(), imageUrls);