【问题标题】:add next, prev buttons in slider image made by picasso and viewpager在 picasso 和 viewpager 制作的滑块图像中添加下一个、上一个按钮
【发布时间】:2019-11-07 00:12:32
【问题描述】:

我在 viewpager 和 picasso 的帮助下制作了一个图像滑块,现在我想在图像上添加下一个、上一个按钮,我该怎么做?

我看到了不同的答案,但都显示错误

这是显示图像滑块的主要活动:

public class MainActivity extends AppCompatActivity {
    private int[] imageUrls = new int[]{
            R.drawable.after_cookie,
            R.drawable.before_cookie
    };
    private WebBackForwardList viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ViewPager viewPager = findViewById(R.id.view_pager);
        ViewPageAdapter adapter = new ViewPageAdapter(this, imageUrls);
        viewPager.setAdapter(adapter);

    }
}

这是 ViewPageAdapter:

public class ViewPageAdapter extends PagerAdapter {

    private Context context;
    private int[] imageUrls;

    ViewPageAdapter(Context context, int[] 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])
                .fit()
                .centerCrop()
                .into(imageView);
        container.addView(imageView);

        return imageView;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}

【问题讨论】:

    标签: java android android-viewpager picasso android-button


    【解决方案1】:

    将此方法添加到您的代码中

    private int getItem(int i) {
       return viewPager.getCurrentItem() + i;
    }
    

    然后将其用于下一个按钮

    Button NextButton = (Button)findViewById(R.id.button1);
    yourButton.setOnClickListener(new OnClickListener() {
    
     @Override
           public void onClick(View view) {
               viewPager.setCurrentItem(getItem(+1), true); //getItem(+1) for next
           }
        });
    

    并将其用于上一个按钮

     Button PreviousButton = (Button)findViewById(R.id.button2);
     PreviousButton.setOnClickListener(new OnClickListener() {
    
     @Override
           public void onClick(View view) {
               viewPager.setCurrentItem(getItem(-1), true); //getItem(-1) for previous
           }
        });
    

    它会正常工作;)

    【讨论】:

    • 我应该将第一个代码放在 Adapter 或 MainActivity 中的什么位置,对于第二个和第三个代码,应该放在 Oncreate 方法中还是外部?
    • 在 MainActivity 中添加第一个代码,在 onCreate 方法中添加第二个和第三个代码
    • 查看link
    • @SurenderKumar 它的答案与 Ali Amini 相同,我有问题请帮助我:(
    • 如果用户去第一个 img 的 prev,你能帮忙添加 tost msg 吗?请? @阿里阿米尼
    猜你喜欢
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多