Search code examples
androidarraysandroid-intentdynamic-variables

Use variable as array name in pageData


I want to call the same ViewPagerActivity with intents, but as source in pageData for view pager I want to use different arrays, according to the activity, which call view pager. So, I tried this

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_viewpager);
    //Get the data to be swiped through

    Intent intent = getIntent();
    String ArrayName = intent.getStringExtra("ArrayName");

    //pageData=getResources().getStringArray(R.array.numbers);
    pageData=getResources().getStringArray(R.array.ArrayName);
    //get an inflater to be used to create single pages
    inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    //Reference ViewPager defined in activity
    vp=(ViewPager)findViewById(R.id.viewPager);
    //set the adapter that will create the individual pages
    vp.setAdapter(new MyPagesAdapter());

In the start activity "numbers" I have

intent.putExtra("ArrayName", "numbers"); startActivity(intent);

and want to get "R.array.numbers" instead of "R.array.ArrayName", if I call view pager from "numbers" activity but on ViewPagerActivity in this line pageData=getResources().getStringArray(R.array.ArrayName)

I have an error "error: cannot find symbol variable ArrayName ". How I can avoid this error?


Solution

  • using switch or if else structure to achieve this like

               String Arrayname = getIntent().getStringExtra("ArrayName");
                switch(Arrayname.toLowerCase()){
                    case "numbers":
                    pageData=getResources().getStringArray(R.array.numbers);
                    mAdapter = new MyPagesAdapter(pageDate);
                        break;
                    case "alphabet":
                    list=getResources().getStringArray(R.array.alphabet);
                    mAdapter = new MyPagesAdapter(list)
                        break;
    
                }
              vp.setAdapter(mAdapter);
    

    etc, this is overview not the exact code