0

I am having trouble loading images from the assets folder. What I want to do is after a user clicks a button the image will switch. I have 6 images in my assets folder and I was wondering how to load a new image after every click.

Essentially I want a back and next button that will scroll through the images.I want to implement it with android-view Pager. Will that be possible to implement? Is there any tutorial online that shows me this? Right now I am calling

private int [] images = {R.drawable.airplane, R.drawable.bike,...

But i now want to store everything in an assets folder

public class MainActivity extends Activity {

private int [] images = {R.drawable.airplane, R.drawable.bike, R.drawable.boat,
        R.drawable.bus2,R.drawable.car,R.drawable.train};

private ViewPager mViewPager;
private MyPagerAdapter myPagerAdapter;
private Button nextBtn, preBtn;
private TextView positionText;
private int imageCount =images.length;

//HashMap<Integer, String> map = new HashMap<Integer, String>();


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

    /* Initialize every object */

    //String whatString = map.get(R.drawable.airplane);

    myPagerAdapter = new MyPagerAdapter();

    nextBtn = (Button)findViewById(R.id.nextBtn);
    preBtn = (Button)findViewById(R.id.prevBtn);

    positionText= (TextView)findViewById(R.id.position);

    mViewPager =(ViewPager)findViewById(R.id.viewPager);
    mViewPager.setAdapter(myPagerAdapter);


    /* ViewPager's setCurrentItem(int) method is used to set first image */

    mViewPager.setCurrentItem(0);
    positionText.setText("1 of "+ imageCount);


    /* OnPageChangeListener */
    mViewPager.setOnPageChangeListener(new OnPageChangeListener()
    {

        @Override
        public void onPageSelected(int position) {

            positionText.setText((position+1) +" of "+imageCount);

            if (position==imageCount-1) {
                nextBtn.setEnabled(false);
            }
            else {
                nextBtn.setEnabled(true);
            }
            if (position==0){
                preBtn.setEnabled(false);
            }
            else {
                preBtn.setEnabled(true);
            }
        }

        @Override
        public void onPageScrolled(int position, float positionOffset, 
                int positionOffsetPixels) {

        }

        @Override
        public void onPageScrollStateChanged (int state) {

        }
    });

    /* OnClickListener on buttons to change the image in viewpager */

    nextBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            mViewPager.setCurrentItem(mViewPager.getCurrentItem()+1);
        }


    });

    preBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            mViewPager.setCurrentItem(mViewPager.getCurrentItem()-1);
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

/* Pager Adapter for ViewPager */

private class MyPagerAdapter extends PagerAdapter {

    public MyPagerAdapter() {}


    @Override
    public int getCount() {
        return imageCount;

    }

    @Override
    public View instantiateItem(ViewGroup container, int position){

    ImageView mImageView = new ImageView(MainActivity.this);
    mImageView.setImageResource(images[position]);

    // add ImageView to ViewPager and return it

    container.addView(mImageView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

    return mImageView;

}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {

    container.removeView((View) object);
}


@Override 
public boolean isViewFromObject(View view, Object object){
    return view == object;
}

}

}

Dan
  • 63
  • 1
  • 2
  • 8

0 Answers0