Android 在ViewPager中初始化ListView的位置

Android 在ViewPager中初始化ListView的位置,android,Android,我试图在viewPager中创建一个listview(从文件夹中获取一些文件名),但初始化listview时遇到问题。 当为ListView设置适配器时,我会得到NullPointerException。 据我所知,我需要在viewPager中初始化ListView,但我已经尝试了很多东西,我仍然得到了NPE。 我必须在哪里初始化它才能停止获取NPE 因此,我在lv1.setAdapter(adapter)处得到NullPointException 这是整个活动,以防你们需要它来解决我的问题 p

我试图在viewPager中创建一个listview(从文件夹中获取一些文件名),但初始化listview时遇到问题。 当为ListView设置适配器时,我会得到NullPointerException。 据我所知,我需要在viewPager中初始化ListView,但我已经尝试了很多东西,我仍然得到了NPE。 我必须在哪里初始化它才能停止获取NPE

因此,我在
lv1.setAdapter(adapter)处得到NullPointException

这是整个活动,以防你们需要它来解决我的问题

public class Gestionare extends Activity {

public List<String> myList;
public File file;
ViewPager vp;
LinearLayout gestionare1;
ListView lv1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gestionare);
    citire();
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);

    MyPagerAdapter adap = new MyPagerAdapter(this);
    vp.setAdapter(adap);

    vp.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub

        }

    });



}

private class MyPagerAdapter extends PagerAdapter {
    private ArrayList<LinearLayout> arry;

    public MyPagerAdapter(Context context) {
        arry = new ArrayList<LinearLayout>();
        // arry.add(new ListView1Page(context));
        arry.add(new LinearLayout(context));
        // views.add(new ListView2Page(context));
        arry.add(new LinearLayout(context));
        // use this when design done graphically
    }

    @Override
    public void destroyItem(View view, int arg1, Object object) {
        ((ViewPager) view).removeView((LinearLayout) object);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return arry.size();
    }

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


          LayoutInflater inflater = (LayoutInflater) collection.getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            int resId = 0;
            switch (position) {
            case 0:
                resId = R.layout.activity_gestionare1;
                View view = inflater.inflate(resId, null);

                gestionare1 = (LinearLayout) view.findViewById(R.id.gestionare1);
                lv1=(ListView)view.findViewById(R.id.lv1);
                ((ViewPager) collection).addView(view, 0);
                citire();
                return view;
            case 1:
                resId = R.layout.activity_gestionare2;
                View view2 = inflater.inflate(resId, null);
                ((ViewPager) collection).addView(view2, 0);
                return view2;
            }
            return resId;}
    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {

        return arg0 == arg1;

    }

    public Parcelable saveState() {
        return null;
    }

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }

}

public void citire() {

    myList = new ArrayList<String>();
    vp = (ViewPager) findViewById(R.id.pager);
    lv1=(ListView)findViewById(R.id.lv1);

    File directory = android.os.Environment.getExternalStorageDirectory();
    file = new File(directory.getAbsolutePath() + "/InterSRL");
    File list[] = file.listFiles();

    for (int i = 0; i < list.length; i++) {
        myList.add(list[i].getName());
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1, myList);
 lv1.setAdapter(adapter);
}
公共类Gestinatore扩展活动{
公开名单;
公共文件;
可视寻呼机;
线性布局示意图1;
ListView lv1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u-gestiatore);
citire();
ActionBar ActionBar=getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
MyPagerAdapter adap=新的MyPagerAdapter(此);
副总裁setAdapter(adap);
vp.setOnPageChangeListener(新的OnPageChangeListener(){
@凌驾
公共无效onPageScrollStateChanged(int arg0){
//TODO自动生成的方法存根
}
@凌驾
已滚动页面上的公共void(int arg0、float arg1、int arg2){
//TODO自动生成的方法存根
}
@凌驾
已选择页面上的公共无效(int arg0){
//TODO自动生成的方法存根
}
});
}
私有类MyPagerAdapter扩展了PagerAdapter{
私人ArrayList arry;
公共MyPagerAdapter(上下文){
arry=newarraylist();
//arry.add(新列表视图1页(上下文));
添加(新的线性布局(上下文));
//添加(新的ListView2Page(上下文));
添加(新的线性布局(上下文));
//以图形方式完成设计时使用此选项
}
@凌驾
公共项(视图,int arg1,对象){
((ViewPager)视图)。移除视图((LinearLayout)对象);
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回arry.size();
}
@凌驾
公共对象实例化项(视图集合,int位置){
LayoutInflater充气器=(LayoutInflater)集合。getContext()
.getSystemService(上下文布局\充气机\服务);
int剩余=0;
开关(位置){
案例0:
剩余=R.layout.activity\u-gestiator1;
视图=充气机。充气(剩余,空);
Gestional1=(LinearLayout)view.findViewById(R.id.Gestional1);
lv1=(ListView)view.findViewById(R.id.lv1);
((ViewPager)集合).addView(视图,0);
citire();
返回视图;
案例1:
resId=R.layout.activity_-gestatione2;
视图2=充气机充气(剩余,空);
((ViewPager)集合).addView(view2,0);
返回视图2;
}
返回resId;}
@凌驾
公共布尔值isViewFromObject(视图arg0,对象arg1){
返回arg0==arg1;
}
公共包裹存储状态(){
返回null;
}
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例android.R.id.home:
意向意向=新意向(此,MainActivity.class);
intent.addFlags(intent.FLAG\u活动\u清除\u顶部
|意图。标记活动(单个顶部);
星触觉(意向);
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
公共证券(花旗银行){
myList=新的ArrayList();
vp=(ViewPager)findViewById(R.id.pager);
lv1=(ListView)findViewById(R.id.lv1);
File directory=android.os.Environment.getExternalStorageDirectory();
file=新文件(directory.getAbsolutePath()+“/InterSRL”);
文件列表[]=File.listFiles();
for(int i=0;i

}当您尝试运行citire()时,lv1
为空:

您是否尝试过将
citire()
中的代码移动到
instanceItem
方法中?如果将代码移到那里,可能不需要重新初始化lv1


另外,作为一个一般提示,尽量使用局部变量,这将有助于消除很多范围混淆。

是的,我尝试了,我得到了这个
构造函数ArrayAdapter(gestorae.MyPagerAdapter,int,int,List)未定义
问题是
这个
。在适配器内部时,您需要将其指向活动(上下文):
gestiorae。这改变了这一点,谢谢。但在将其移动到instanceItem方法后,它仍然会给我NPE。。该死的,你把第二个
findViewBYId
去掉了吗?是的,唯一的
lv1=(ListView)findViewBYId(R.id.lv1)位于实例化方法内部
@Override
    public Object instantiateItem(View collection, int position) {


          LayoutInflater inflater = (LayoutInflater) collection.getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            int resId = 0;
            switch (position) {
            case 0:
                resId = R.layout.activity_gestionare1;
                View view = inflater.inflate(resId, null);

                gestionare1 = (LinearLayout) view.findViewById(R.id.gestionare1);
                lv1=(ListView)view.findViewById(R.id.lv1);
                ((ViewPager) collection).addView(view, 0);
                citire();
                return view;
            case 1:
                resId = R.layout.activity_gestionare2;
                View view2 = inflater.inflate(resId, null);
                ((ViewPager) collection).addView(view2, 0);
                return view2;
            }
            return resId;}
public class Gestionare extends Activity {

public List<String> myList;
public File file;
ViewPager vp;
LinearLayout gestionare1;
ListView lv1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gestionare);
    citire();
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);

    MyPagerAdapter adap = new MyPagerAdapter(this);
    vp.setAdapter(adap);

    vp.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub

        }

    });



}

private class MyPagerAdapter extends PagerAdapter {
    private ArrayList<LinearLayout> arry;

    public MyPagerAdapter(Context context) {
        arry = new ArrayList<LinearLayout>();
        // arry.add(new ListView1Page(context));
        arry.add(new LinearLayout(context));
        // views.add(new ListView2Page(context));
        arry.add(new LinearLayout(context));
        // use this when design done graphically
    }

    @Override
    public void destroyItem(View view, int arg1, Object object) {
        ((ViewPager) view).removeView((LinearLayout) object);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return arry.size();
    }

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


          LayoutInflater inflater = (LayoutInflater) collection.getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            int resId = 0;
            switch (position) {
            case 0:
                resId = R.layout.activity_gestionare1;
                View view = inflater.inflate(resId, null);

                gestionare1 = (LinearLayout) view.findViewById(R.id.gestionare1);
                lv1=(ListView)view.findViewById(R.id.lv1);
                ((ViewPager) collection).addView(view, 0);
                citire();
                return view;
            case 1:
                resId = R.layout.activity_gestionare2;
                View view2 = inflater.inflate(resId, null);
                ((ViewPager) collection).addView(view2, 0);
                return view2;
            }
            return resId;}
    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {

        return arg0 == arg1;

    }

    public Parcelable saveState() {
        return null;
    }

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }

}

public void citire() {

    myList = new ArrayList<String>();
    vp = (ViewPager) findViewById(R.id.pager);
    lv1=(ListView)findViewById(R.id.lv1);

    File directory = android.os.Environment.getExternalStorageDirectory();
    file = new File(directory.getAbsolutePath() + "/InterSRL");
    File list[] = file.listFiles();

    for (int i = 0; i < list.length; i++) {
        myList.add(list[i].getName());
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1, myList);
 lv1.setAdapter(adapter);
}
setContentView(R.layout.activity_gestionare);
citire();