2017-03-17 59 views
0

Github的代码:如何从活动的数据发送到扩展PagerAdapter

你好,我不知道这是可能的,但我想从主要活动上我的课延伸发送新数据PagerAdapter。这个应用程序只是一个具有自定义适配器的ViewPager的简单演示。

我当前想要点击主活动上的一个按钮,然后ViewPager的信息就会更改为新的。

我知道如何使用intents将信息从一个活动发送到另一个活动,但这看起来不一样,因为它没有进入新活动。

请指教。

谢谢!

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类已经在活动中设置,并且您希望通过按钮点击活动发送数据,则可以使用界面。 –

+0

使用界面是什么意思?我继续Google搜索,大部分内容都是关于传输数据的片段。你有没有通过网站提供任何参考资料? – ojboba

回答

0

创建一个POJO类,所有要在adapter.like imageresource显示,文本数据。 现在在这里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

相关问题