2017-04-05 13 views
0

androidで作業するオンラインのチュートリアルに沿って、プログラムでテキストを追加するビューページャーを作成しました。私は正常に4つのビューを追加して、その大部分を作成しましたが、ビューの間をスクロールすると、私は常に同じビューを取得しています。私のコードは以下の通りです。最初のビューが単にPage1と言うようになり、スクロールするとPage2と言うようになります。viewPager、Androidにもっと多くのビューを追加する

編集はちょうど私はむしろ、私がここで何をしたいのか単純化している、明確にするために、最終目標は、それぞれの「ビュー」異なるようにするためです。たとえば、ページ1にはテキストビュー、ページ2にはイメージビュー、ページ3には大きなテキストが含まれています。

Page 1 = "This is page 1" 
Page 2 = An image of a sheep 
Page 3 = Big red text saying "BANG!" 

XML

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/black"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <android.support.v4.view.ViewPager 
      android:id="@+id/viewpager" 
      android:layout_width="fill_parent" 
      android:layout_height="300dp" /> 

     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:srcCompat="@drawable/myImage" 
      android:id="@+id/imageView13" /> 

    </LinearLayout> 
</RelativeLayout> 

Javaのあなたのページをスクロール

import android.content.Context; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.os.Parcelable; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.TextView; 


public class Testing extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_testing); 

     ViewPager vp = (ViewPager) findViewById(R.id.viewpager); 
     vp.setAdapter(new MyPagerAdapter(this)); 
    } 
} 

class MyPagerAdapter extends PagerAdapter { 

    private Context ctx; 

    public MyPagerAdapter(Context context) { 
     ctx = context; 
    } 

    // Set number of slides 
    @Override 
    public int getCount() { 
     return 4; 
    } 

    @Override 
    public Object instantiateItem(View collection, int position) { 

     TextView tv = new TextView(ctx); 
     tv.setTextSize(50); 
     tv.setTextColor(Color.WHITE); 
     tv.setText("PAGE1"); 
     ((ViewPager) collection).addView(tv); 
     return tv; 
    } 

    // Destroy 
    @Override 
    public void destroyItem(View collection, int position, Object view) { 
     ((ViewPager) collection).removeView((View) view); 
    } 

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

    // Parceable 
    @Override 
    public Parcelable saveState() { 
     return null; 
    } 

    // Restore state 
    @Override 
    public void restoreState(Parcelable arg0, ClassLoader arg1) { 
    } 

    //Start Update 
    @Override 
    public void startUpdate(View arg0) { 
    } 

    // Finish update 
    @Override 
    public void finishUpdate(View arg0) { 
    } 
} 

答えて

0

位置変更...

@Override 
public Object instantiateItem(View collection, int position) { 

if(position==0){ 
    TextView tv = new TextView(ctx); 
    tv.setTextSize(50); 
    tv.setTextColor(Color.WHITE); 
    tv.setText("PAGE "+position); 
    collection.addView(tv); 
    return tv; 
}else if(position==1){ 
    ImageView iv = new ImageView(ctx); 
    iv.setImageResource(R.mipmap.ic_launcher); 
    collection.addView(iv); 
    return iv; 
}else if(position==2){ 
    TextView tv = new TextView(ctx); 
    tv.setTextSize(50); 
    tv.setTextColor(Color.WHITE); 
    tv.setText("BANG"); 
    collection.addView(tv); 
    return tv; 
}else if(position==3){ 
    ImageView iv = new ImageView(ctx); 
    iv.setImageResource(R.mipmap.ic_launcher); 
    collection.addView(tv); 
    return iv; 
} 
+0

申し訳ありません私は自分の問題を簡略化したようですが、私は質問を編集しました。 –

関連する問題