2016-10-04 12 views
0

私のプロジェクトでは、Viewページャを使用してデータベースから写真を表示しています。私のデータベースでは、すべてのページに1つの画像があります。 最初のページで最初の写真を見ることはできますが、ビューページャーは次のページから2番目の写真を表示しません。私は理由を知っている、そして理由は私の状態が2番目のページに行かないということです。 2ページ目にジャンプする場所がわかりません。ここ私のViewpagerは2番目のイメージをデータベースに表示できません

は私のコードです:私は、ビューのページャを追加する前に

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); 

     } 

    } 


} 

私のロード方法このようなものだった:

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(); 


} 

と私は私のページを変更するにはボタンを一つ持っていた(私は行くことができます。

ここは私のボタンです(しかし今はビューページャーが必要ですが、もうこのボタンは必要ありません)

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. 

答えて

0

あなたは方法このライン

負荷(海、名前、ページ2)のonCreate変更することができます。 これは ロード(海、名前、2);

アダプタinstantiateItem()メソッドは、( " "コンテンツ"、海、名前、img_count +")コード 列P = db.getpicを変更します。 このコードで 文字列p = db.getpic( "content"、sea、Name、position + "");

+0

いいえこのload(sea、name、2)のようなLoadメソッドを変更することはできません。最初のページから次のページを読み込まなければならないからです。 – nsr

+0

ImagePagerAdapterを作成するときに、oncreateメソッドのアダプタカウンタに "1"を送信します。 ** private void load(String sea、String Name、int page3){ ViewPager viewPager =(ViewPager)findViewById(R.id。 view_pager); ImagePagerAdapterアダプタ=新しいImagePagerAdapter(ページ3、名前); viewPager.setAdapter(adapter); db.open(); } ** –

関連する問題