我正在尝试在 viewPager 中创建一个列表视图(从文件夹中获取一些文件名),但我在初始化 ListView 时遇到了问题。为 ListView 设置适配器时出现 NullPointerException。从我读过的内容来看,我需要在 viewPager 中初始化 ListView,但我已经尝试了很多东西,但我仍然得到了 NPE。我必须在哪里初始化它才能停止获取 NPE?
所以,我得到 NullPointExceptionlv1.setAdapter(adapter);
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);
}
这是 InstatiateItem 部分:
@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);
}
}