2016-11-11 12 views
0

私のプロジェクトでは、データベースからビューページャに画像を読み込みたいと思います。 私のアプリは次のようなものです:最初に私はいくつかのタイトルを表示するリストビューを1つ持っています。各アイテムをクリックすると2番目のアクティビティに進みます(私はちょうど の写真が2枚あります)ビューページャ。ここで私のページャは私の最初の画像を表示するだけです

は私のコードです:

public class main_matn2 extends Activity { 
    private ImageView share; 
    private ImageView test; 

    //   , img; 
    private TextView matn; 
    // ImageButton page; 
    private database db; 
    private String sea; 
    private String name; 
    private int Page1; 
    private 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); 

     test = (ImageView) findViewById(R.id.more); 
     share = (ImageView) findViewById(R.id.main_matn_share); 
     matn = (TextView) findViewById(R.id.main_matn_matn); 

     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; //mImages.length; 
     } 

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

答えて

0

img_countは常に== 1.あなたが表示したい番号を付ける項目に応じてint型を返す必要があるので、あなたは、最初のページを参照してください。

private int Page2 = 1; 

load(sea, name, Page2); // Page2 is == 1 

private void load(String sea, String Name, int page3) { 
    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
    ImagePagerAdapter adapter = new ImagePagerAdapter(page3, Name); // page3 is == 1 
    viewPager.setAdapter(adapter); 
    db.open(); 
} 

public ImagePagerAdapter(int count, String Name) { 
    img_count = count; // count is == 1 
    this.Name = Name; 
} 

@Override 
public int getCount() { 
    return img_count; // img_count is always == 1 
} 
+0

はいuがあなたがViewPagerに示すべきであるすべてのabjectsで 'List'または' Array'を維持する必要があり – nsr

+0

第2の画像を表示するためにそれを変更する方法を、右に述べました。次に、 'ImagePagerAdapter'' getCount() 'メソッドで' List'または 'Array'長さを返します。 > 1の場合、ViewPagerは1ページ以上をレンダリングしようとします。いくつかの例外がスローされた場合は、データモデルをチェックし、 'instantiateItem'が正しく動作するかどうかを確認してください。 – lubilis

+0

私はそれを行う方法を知らない – nsr

関連する問題