Android 设置适配器时出现NullPointerException
我试图获取listview中文件夹中的文件名(listview位于ViewPager的布局中),但是我得到了一个NullPointerException,我无法找出问题所在Android 设置适配器时出现NullPointerException,android,Android,我试图获取listview中文件夹中的文件名(listview位于ViewPager的布局中),但是我得到了一个NullPointerException,我无法找出问题所在 public void citire() { ListView lv1 = (ListView) findViewById(R.id.lv1); myList = new ArrayList<String>(); File directory = Environment.getExte
public void citire() {
ListView lv1 = (ListView) findViewById(R.id.lv1);
myList = new ArrayList<String>();
File directory = Environment.getExternalStorageDirectory();
file = new File(directory + "/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);
}
编辑:
以下是我的整个viewPager活动:
public class Gestionare extends Activity {
public List<String> myList;
public File file;
ViewPager vp;
LinearLayout gestionare1;
@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 view, int position) {
// View myView = views.get(position);
// ((ViewPager) view).addView(myView);
// return myView;
//
View v = new View(Gestionare.this.getApplicationContext());
final LayoutInflater inflater = (LayoutInflater) Gestionare.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
switch (position) {
case 0:
v = inflater
.inflate(R.layout.activity_gestionare2, null, false);
break;
case 1:
v = inflater
.inflate(R.layout.activity_gestionare1, null, false);
break;
default:
break;
}
((ViewPager) view).addView(v, 0);
return v;
}
@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);
gestionare1 = (LinearLayout) findViewById(R.id.gestionare1);
ListView lv1 = (ListView) gestionare1.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;
@凌驾
创建时受保护的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位置){
//View myView=views.get(位置);
//((ViewPager)视图).addView(myView);
//返回myView;
//
视图v=新视图(gestorae.this.getApplicationContext());
最终LayoutFlater充气机=(LayoutFlater)手势。此
.getSystemService(上下文布局\充气机\服务);
开关(位置){
案例0:
v=充气机
.充气(R.layout.activity\u-gestionare2,null,false);
打破
案例1:
v=充气机
.充气(R.layout.activity\u gestional1,空,假);
打破
违约:
打破
}
((ViewPager)视图).addView(v,0);
返回v;
}
@凌驾
公共布尔值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);
Gestional1=(LinearLayout)findViewById(R.id.Gestional1);
ListView lv1=(ListView)Gestional1.findViewById(R.id.lv1);
File directory=android.os.Environment.getExternalStorageDirectory();
file=新文件(directory.getAbsolutePath()+“/InterSRL”);
文件列表[]=File.listFiles();
for(int i=0;i
}如果撞车线
lv1.setAdapter(adapter);
这意味着
lv1
为空,这意味着findViewById
在指定的布局中未找到id为R.id.lv1
的ListView
,例如,如果在ViewPager中使用FragmentStatePagerAdapter初始化列表,则需要执行以下操作:
@Override
public Fragment getItem(int thePosition)
{
return fragments.get(thePosition);
}
然后在你的片段中:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View layout = inflater.inflate(R.layout.your_layout_with_list, null);
ListView lv1 = (ListView) layout .findViewById(R.id.lv1);
myList = new ArrayList<String>();
File directory = Environment.getExternalStorageDirectory();
file = new File(directory + "/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);
return layout;
}
创建视图时的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{
视图布局=充气机。充气(R.layout.your\u layout\u with\u list,null);
ListView lv1=(ListView)layout.findViewById(R.id.lv1);
myList=新的ArrayList();
File directory=Environment.getExternalStorageDirectory();
文件=新文件(目录+“/InterSRL”);
文件列表[]=File.listFiles();
for(int i=0;i public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View layout = inflater.inflate(R.layout.your_layout_with_list, null);
ListView lv1 = (ListView) layout .findViewById(R.id.lv1);
myList = new ArrayList<String>();
File directory = Environment.getExternalStorageDirectory();
file = new File(directory + "/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);
return layout;
}