Android ViewPager и ListViews

Я относительно новичок в разработке Android и развитие в целом. У меня проблемы схватывают синтаксис / процесс для ViewPager.

У меня есть несколько листов, которые я хочу реализовать в ViewPager. У меня есть пакет совместимости и все. Но я не видел никаких полных примеров того, как это сделать.

Я учусь лучше всего, глядя на примеры. Если кто-то может опубликовать примеры любых проектов, в которых вы реализовали эту вещь, пожалуйста, дайте мне знать.

Выпуск в том, что я получаю исключение NULL указателя на этой линии, когда пытаясь запустить свою деятельность:

listView1.setAdapter(new ArrayAdapter<Object>(this, R.layout.rowlayout, list1));

Я подозреваю, что я просто делаю это все неправильно. Если я не использую ViewPager, я могу получить оба списка для отображения их содержимого. Поэтому я знаю, что списки не нулевые ...

Отредактируйте:

Благодаря полуме за ответ ниже! Вот код, который я закончил использовать, слегка модифицировал из примеров половик.

ViewPagerAdapter:

public class ViewPagerAdapter extends PagerAdapter implements TitleProvider
{
    private ListView listView1;
    private static String[] titles = new String[]
    {
       "Page 1",
       "Page 2",
       "Page 3",
    };
    private final Context context;

    public ViewPagerAdapter( Context context )
    {
        this.context = context;
    }

    @Override
    public String getTitle( int position )
    {
        return titles[ position ];
    }

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

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

        LayoutInflater layoutInflater = ((Activity) context).getLayoutInflater();

        listView1 = (ListView) layoutInflater.inflate(R.layout.listview1, null);

        String[] listData = null;
        MyArrayAdapter dataAdapter;

        if (position == 0) {
          listData = context.getResources().getStringArray(R.array.list1);
          dataAdapter = new MyArrayAdapter((Activity) context,
              R.layout.rowlayout, listData);
        } else if (position == 1) {
          listData = context.getResources().getStringArray(R.array.list2);
          dataAdapter = new MyArrayAdapter((Activity) context,
              R.layout.rowlayout, listData);
        } else {
          listData = context.getResources().getStringArray(R.array.list3);
          dataAdapter = new MyArrayAdapter((Activity) context,
              R.layout.rowlayout, listData);
        }

        listView1.setAdapter(dataAdapter);
        listView1.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapter, View view,
                int position, long arg3) {
              Toast.makeText(context,
                  adapter.getAdapter().getItem(position).toString(),
                  Toast.LENGTH_LONG).show();
            }
        });

        ((ViewPager) collection).addView(listView1, 0);

        return listView1;
    }


    @Override
    public void destroyItem(View collection, int position, Object view) {
        System.out.println("on destroyItem()");
        ((ViewPager) collection).removeView((ListView) view);
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        System.out.println("on isViewFromObject()");
        return view == ((ListView) object);
    }

    @Override
    public void finishUpdate( View view ) {}

    @Override
    public void restoreState( Parcelable p, ClassLoader c ) {}

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

    @Override
    public void startUpdate( View view ) {}
}

ArrayAdapter:

public class MyArrayAdapter extends ArrayAdapter<String>{

    private Activity context = null;
    private String[] names = null;
    private int rowLayoutId;
    public MyArrayAdapter(Activity context, int textViewResourceId, String[] names) {
        super(context, textViewResourceId, names);
        this.context = context;
        this.names = names;
        this.rowLayoutId =textViewResourceId;
    }

    // static to save the reference to the outer class and to avoid access to
    // any members of the containing class
    static class ViewHolder {
        protected ImageView imageView;
        protected TextView textView;
    }

}
12
задан Wernight 13 November 2014 в 09:19
поделиться