#java #android
#java #Android
Вопрос:
В моем проекте я использую Viewpager для отображения моих фотографий из базы данных.В моей базе данных у меня есть две страницы, на каждой странице по одной фотографии. Я могу получить первое изображение на своей первой странице, но view pager не показывает мое второе изображение со следующей страницы. Я знаю причину, и причина в том, что мое состояние не переходит на вторую страницу. Я не знаю, где я перехожу на вторую страницу.
вот мой код:
public class main_matn2 extends Activity {
private database db;
private String sea;
private String name;
private int Page1;
public int Page2 = 1;
private SharedPreferences sp;
TextView Lesson_Name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main_matn2);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.matn_title);
Lesson_Name = (TextView) findViewById(R.id.lesson_name);
db = new database(this);
Bundle ex = getIntent().getExtras();
sea = ex.getString("sea");
name = ex.getString("name");
Page1 = Integer.parseInt(ex.getString("page"));
Lesson_Name.setText(name);
Typeface type = Typeface.createFromAsset(getAssets(), "font/font_bold.ttf");
Lesson_Name.setTypeface(type);
load(sea, name, Page2);
}
private void load(String sea, String Name, int page3) {
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
ImagePagerAdapter adapter = new ImagePagerAdapter(page3, Name);
viewPager.setAdapter(adapter);
db.open();
}
@Override
public void onBackPressed() {
sp = getApplicationContext().getSharedPreferences("user", 0);
Editor ed = sp.edit();
ed.putString("name", name);
ed.putString("sea", sea);
ed.putInt("page", Page1);
ed.commit();
finish();
}
@Override
protected void onPause() {
sp = getApplicationContext().getSharedPreferences("user", 0);
Editor ed = sp.edit();
ed.putString("name", name);
ed.putString("sea", sea);
ed.putInt("page", Page1);
ed.commit();
super.onPause();
}
public class ImagePagerAdapter extends PagerAdapter {
int img_count;
String Name;
public ImagePagerAdapter(int count, String Name) {
img_count = count;
this.Name = Name;
}
@Override
public int getCount() {
return img_count;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = main_matn2.this;
ImageView imageView = new ImageView(context);
int padding = context.getResources().getDimensionPixelSize(
R.dimen.padding_medium);
imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
String p = db.getpic("content", sea, Name, img_count "");
if (p != null) {
int ImageResource = getResources().getIdentifier(p, "drawable", getPackageName());
imageView.setImageResource(ImageResource);
}
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
}
мой метод загрузки перед добавлением view pager был таким:
private void load(String sea, String Name, int page3) {
db.open();
String p = db.getpic("content", sea, Name, page3 "");
if (p != null) {
int ImageResource = getResources().getIdentifier(p, "drawable", getPackageName());
img.setImageResource(ImageResource);
} else {
img.setVisibility(View.GONE);
}
db.close();
}
и у меня была одна кнопка для изменения моих страниц.(Я мог бы перейти на вторую страницу с помощью этой кнопки.
вот моя кнопка (но теперь мне нужен viewpager, и мне больше не нужна эта кнопка)
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (Page1 == Page2) {
Toast.makeText(getApplicationContext(), "last page", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(main_matn1.this, CustomTabActivity.class);
startActivity(intent);
} else {
Page2 ;
load(sea, name, Page2);
}
}
});
any help?
I am new with android and now I'm very confused.
Ответ №1:
Можете ли вы изменить метод onCreate в этой строке
загрузить (sea, name, Page2); с этой загрузкой (sea, name, 2);
и в методе adapter instantiateItem() измените строку кода p = db.getpic(«content», sea, Name, img_count «»); с помощью этой строки кода p = db.getpic(«content», sea, Name, position «»);
Комментарии:
1. Нет, я не могу изменить свой метод загрузки, как этот load (sea, name, 2); потому что он должен загрузить первую страницу, затем следующую страницу.
2. но когда вы создаете свой ImagePagerAdapter, вы отправляете «1» для своего счетчика адаптера в методе oncreate private void load(String sea, String Name, int page3) {ViewPager ViewPager = (ViewPager) findViewById(R.id.view_pager); Адаптер ImagePagerAdapter = новый ImagePagerAdapter(страница 3, имя); ViewPager.setAdapter(адаптер); db.open(); }