片段中的imagesslider?

时间:2019-02-18 14:41:55

标签: java android android-fragments

我想使用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添加到片段?

3 个答案:

答案 0 :(得分:0)

使用getContext()代替该行中的此代码。您的构造函数需要上下文而不是片段实例。

答案 1 :(得分:0)

另一个答案很接近。 不应在片段中使用this,而应使用getActivity()

编辑: 我建议使用Glider代替Picasso。

答案 2 :(得分:0)

您必须在实例化适配器对象时传递正确的上下文。由于您的片段位于活动内部,因此上下文将是该特定活动。 只需使用getActivity()作为上下文。如果片段托管在FragmentActivity内部,则需要使用getContext()。     因此只需使用。

ActueelAdapter adapter = new ActueelAdapter(getActivity(), imageUrls);