15

I am getting a Cannot resolve constructor ArrayAdapter in my OnCreateView method with the listAdapter I am trying to list text data in my tabs and here is my main activity. Any help will be appreciated I am still a noobie in Java.

public class MainActivity extends ActionBarActivity {

    private Toolbar toolbar;
    private ViewPager mPager;
    private SlidingTabLayout mTabs;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar);

        mPager= (ViewPager) findViewById(R.id.viewPager);
        mTabs=(SlidingTabLayout) findViewById(R.id.tabs);
        mPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
        mTabs.setDistributeEvenly(true);
        mTabs.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
        mTabs.setSelectedIndicatorColors(getResources().getColor(R.color.colorAccent));
        mTabs.setViewPager(mPager);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    class MyPagerAdapter extends FragmentPagerAdapter {

        String[] tabs;

        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
            tabs=getResources().getStringArray(R.array.tabs);
        }

        @Override
        public Fragment getItem(int position) {

            MyFragment myFragment=MyFragment.getInstance(position);
            return myFragment;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return tabs[position];
        }

        @Override
        public int getCount() {
            return 5;
        }
    }

    public static class MyFragment extends Fragment {

        private TextView textView;
        private ListView mainListView;
        private ArrayAdapter<String> listAdapter ;

        public static MyFragment getInstance(int position){

            MyFragment myFragment=new MyFragment();
            Bundle  args=new Bundle();
            args.putInt("position", position);
            myFragment.setArguments(args);
            return myFragment;
        }

        @Override

        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

            View layout=inflater.inflate(R.layout.fragment_my, container, false);

            mainListView=(ListView) layout.findViewById(R.id.position);

            String[] planets = new String[] { "Mercury", "Venus", "Earth", "Mars",
                    "Jupiter", "Saturn", "Uranus", "Neptune"};
            ArrayList<String> planetList = new ArrayList<String>();
            planetList.addAll( Arrays.asList(planets) );

            listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, planetList);
            mainListView.setAdapter( listAdapter );
            return layout;
        }
    }
}

3 Answers 3

76

Change

 listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, planetList);

to

 listAdapter = new ArrayAdapter<String>(getActivity(), R.layout.simplerow, planetList);

You can get Context in Fragment by using getActivity().

Sign up to request clarification or add additional context in comments.

1 Comment

[unchecked] unchecked call to ArrayAdapter(Context,int,List<T>) as a member of the raw type ArrayAdapter where T is a type-variable
14

Replace this with activityName.this Change

listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, planetList);

with

listAdapter = new ArrayAdapter<String>(activityName.this, R.layout.simplerow, planetList);

This solved for me using in asyncTask.

Comments

3

Try

import android.widget.ArrayAdapter;

This can as well solve the problem.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.