在viewpager中填充现有列表视图

时间:2015-02-24 08:25:46

标签: android listview android-viewpager

我正在开发一个项目,我在viewpager中有3个活动/片段

现在我想填充这个listview硬编码或JSON文件,问题是findviewbyid返回null,所以我不能添加任何新项目。

i使用此pageradapter创建viewpager

public class MyPagerAdapter extends PagerAdapter {
    public int getCount() {
        return 3;
    }
    public Object instantiateItem(ViewGroup collection, int position) {
        LayoutInflater inflater = (LayoutInflater) collection.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        int resId = 0;
        switch (position) {
            case 0:
                resId = R.layout.activity_friend;
                break;
            case 1:
                resId = R.layout.activity_mainactiv;
                break;
            case 2:
                resId = R.layout.activity_map;
                break;
        }
        View view = inflater.inflate(resId, null);
        ((ViewPager) collection).addView(view, 0);
        return view;
    }
    @Override
    public void destroyItem(ViewGroup arg0, int arg1, Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == ((View) arg1);
    }

    //public boolean isViewFromObject(ViewGroup arg0, Object arg1) {
    // return arg0 == ((View) arg1);
    //}
    @Override
    public Parcelable saveState() {
        return null;
    }
}

里面的页面可以分段或活动尚未决定什么是我的应用程序的最佳选择

然后这是viewpager所在的主要部分

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<android.support.v4.view.ViewPager
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/viewpager_layout"/>
</LinearLayout>

我已经阅读了一些教程,我知道你必须在mainactivity oncreate或pageradapter中填充listview,以便为你的页面充气

prepareListData();
listDataHeader.toArray(Listdata);
ListView listview1 = (ListView)findViewById(R.id.listView);
ArrayAdapter<String> Sadapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,Listdata);
listview1.setAdapter(Sadapter);

这是我试图用来填充listview的代码

我希望我能在这里得到更多信息,所以我知道在哪里

1 个答案:

答案 0 :(得分:0)

所以我想通了,

resId = R.layout.activity_mainactiv;
                    v = inflater.inflate(resId,null);

                    // get the listview
                    View explist = v.findViewById(R.id.expandableListView2);
                    expListView = (ExpandableListView)explist;

                    // preparing list data
                    prepareListData();

你从膨胀的视图中创建一个新视图并确保列表在其中,然后我使用我创建的方法填充它