i am trying to set images into the viewpager from horizontalscrollview.
i can not get the id of the horizontalscrollview to use in setcurrentItem method.
i have tried so many things but i could not.
Here is the MainActivity class
public class MainActivity extends AppCompatActivity {
int toplamSayfa = 5;
private View btnNext, btnPrev;
HorizontalScrollView hs;
ImageView imageView = null;
private Integer images[] = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e};
ViewPager viewPager;
LinearLayout myGallery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CustomPagerAdapter adapter = new CustomPagerAdapter(this, toplamSayfa);
myGallery = (LinearLayout) findViewById(R.id.container);
hs = (HorizontalScrollView) findViewById(R.id.scrollview);
viewPager = (ViewPager) findViewById(R.id.view_pager);
btnNext = findViewById(R.id.next);
btnPrev = findViewById(R.id.prev);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);
btnPrev.setOnClickListener(onClickListener(0));
btnNext.setOnClickListener(onClickListener(1));
addImagesToThegallery();
}
private void addImagesToThegallery() {
final LinearLayout imageGallery = (LinearLayout) findViewById(R.id.container);
for ( Integer image : images) {
imageGallery.addView(getImageView(image));
}
}
private View getImageView(final Integer image) {
imageView = new ImageView(getApplicationContext());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, 0, 10, 0);
imageView.setLayoutParams(lp);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//the method where i am stuck
viewPager.setCurrentItem();
}
});
imageView.setImageResource(image);
return imageView;
}
private View.OnClickListener onClickListener(final int i) {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
if (i > 0) {
if (viewPager.getCurrentItem() < viewPager.getAdapter().getCount() - 1) {
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
}
} else {
if (viewPager.getCurrentItem() > 0) {
viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
}
}
}
};
}
}
Update the addImagesToThegallery
method to keep the index of the image while adding the image to gallery from your images
array :
private void addImagesToThegallery() {
final LinearLayout imageGallery = (LinearLayout) findViewById(R.id.container);
int i = 0;
for ( Integer image : images) {
imageGallery.addView(getImageView(image,i));
i += 1;
}
}
and use the index
here :
private View getImageView(final Integer image, int index) {
imageView = new ImageView(getApplicationContext());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, 0, 10, 0);
imageView.setLayoutParams(lp);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//use the index here
viewPager.setCurrentItem(index);
}
});
imageView.setImageResource(image);
return imageView;
}