2017-03-17 9 views
0

Githubのコードを拡張するクラスに活動からのデータを送信する方法:PagerAdapter

こんにちは、私はこれが可能であるのかはわからないが、私が延びている私のクラスに主な活動から新しいデータを送信したいですPagerAdapter。このアプリは、カスタムアダプタを持つViewPagerの簡単なデモです。

現在、主なアクティビティのボタンをクリックすると、ViewPagerの情報が新しいアクティビティに変更されます。

インテントを使用して1つのアクティビティから別のアクティビティに情報を送信する方法を理解していますが、これは新しいアクティビティにはなりません。

お知らせください。

ありがとうございました!

MainActivity:

public class MainActivity extends AppCompatActivity { 
     ViewPager viewPager; 
     customSwip customSwip; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      viewPager=(ViewPager)findViewById(R.id.viewPager); 
      customSwip=new customSwip(this); 
      viewPager.setAdapter(customSwip); 

      Button button = (Button)findViewById(R.id.button); 
      button.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // SOMEHOW PASS THESE DATA TO customSWIP to set new values 
        int [] imageResources ={R.drawable.capture1,R.drawable.capture2,R.drawable.capture3,R.drawable.capture4,R.drawable.capture5}; 
        String[] imageText = {"new", "two", "three", "four", "five"}; 
        String[] imageHmong = {"new", "new", "new", "new", "new"}; 
       } 
      }); 

     } 
    } 

customSwip:

public class customSwip extends PagerAdapter { 
     private int [] imageResources ={R.drawable.capture1,R.drawable.capture2,R.drawable.capture3,R.drawable.capture4,R.drawable.capture5}; 
     private String[] imageText = {"one", "two", "three", "four", "five"}; 
     private String[] imageDifferent = {"61236", "612361", "612361", "612361", "612361"}; 
     private Context ctx; 
     private LayoutInflater layoutInflater; 

     public customSwip(Context c) { 
      ctx=c; 
     } 

     @Override 
     public int getCount() { 
      return imageResources.length; 
     } 

     @Override 
     public Object instantiateItem(ViewGroup container, int position) { 
      layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View itemView=layoutInflater.inflate(R.layout.activity_custom_swip,container,false); 
      ImageView imageView=(ImageView) itemView.findViewById(R.id.swip_image_view); 
      TextView textHmong=(TextView) itemView.findViewById(R.id.different); 
      TextView textEnglish=(TextView) itemView.findViewById(R.id.english); 
      imageView.setImageResource(imageResources[position]); 
      final String dummytext = imageText[position]; 
      textHmong.setText(imageDifferent[position]); 
      textEnglish.setText(imageText[position]); 
      container.addView(itemView); 
      imageView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Toast.makeText(ctx, "" + dummytext, Toast.LENGTH_SHORT).show(); 
       } 
      }); 
      return itemView; 
     } 

     @Override 
     public void destroyItem(ViewGroup container, int position, Object object) { 

     } 

     @Override 
     public boolean isViewFromObject(View view, Object object) { 

      return (view==object); 
     } 
    } 
+0

customSwipクラスがすでにアクティビティに設定されていて、アクティビティのボタンクリックでデータを送信する場合は、interfaceを使用できます。 –

+0

インターフェイスを使用するとどういう意味ですか?私は先に進んでそれを捜して、フラグメントを使ってデータを転送することについての大部分が出てきました。ウェブサイトから参照資料を取得していますか? – ojboba

答えて

0

あなたがadapter.like imageresource、テキストで表示するすべてのデータのためのPOJOクラスを作成します。 ここYourDataはそのpojoクラスです。 これで、アダプターとアダプターで同じデータを使用しています。 必要なデータを含むcustomSwipのコンストラクタを作成します。

public class customSwip extends PagerAdapter { 
YourPojo yourPojo; 
    private int [] imageResources ={R.drawable.capture1,R.drawable.capture2,R.drawable.capture3,R.drawable.capture4,R.drawable.capture5}; 
    private String[] imageText = {"one", "two", "three", "four", "five"}; 
    private String[] imageDifferent = {"61236", "612361", "612361", "612361", "612361"}; 
    private Context ctx; 
    private LayoutInflater layoutInflater; 

    public customSwip(Context c,YourPojo yourPojo) { 
     ctx=c; 
     this.yourPojo=yourPojo; 
    } 

    @Override 
    public int getCount() { 
     return imageResources.length; 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View itemView=layoutInflater.inflate(R.layout.activity_custom_swip,container,false); 
     ImageView imageView=(ImageView) itemView.findViewById(R.id.swip_image_view); 
     TextView textHmong=(TextView) itemView.findViewById(R.id.different); 
     TextView textEnglish=(TextView) itemView.findViewById(R.id.english); 
     imageView.setImageResource(imageResources[position]); 
     final String dummytext = imageText[position]; 
     textHmong.setText(imageDifferent[position]); 
     textEnglish.setText(imageText[position]); 
     container.addView(itemView); 
     imageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(ctx, "" + dummytext, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     return itemView; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 

    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 

     return (view==object); 
    } 
} 

アダプタでメソッドを作成します。 MainActivityメソッドのボタンをクリックすると、viewPagersデータを更新できるアダプタオブジェクトを使用してメソッドを呼び出します。

+0

申し訳ありませんが、私は今一時間それを把握しようとしていますが、私は理解が不足しているためにあなたの解決策を完全に理解していません。 customSwipのコンストラクタを提案したように追加しましたが、実際にそれをどうしたらいいのか分かりません。ちなみに、私はそれをメインのアクティビティに追加するのか、それともincustomSwipですか?私はそれがcustomSwipでなければならないと信じています。私はいくつかのゲッターを作成しましたが、私はもう何も設定していないので、少し失われています。もう一度アドバイスしてください。 @MuhibPirani – ojboba

+0

アダプタに表示するすべてのデータのpojoクラスを作成します。 –

+0

私はあなたが今何を意味しているのか理解していますし、ある程度までは機能していますが、いくつかの欠点がありますが、ここから理解できると思います。どうもありがとうございました – ojboba

関連する問題