已有101人关注
Android ListView使用 抛出AndroidRuntime(862): FATAL EXCEPTION: main 异常
发表在Java图书答疑 2013-07-14
是否精华
版块置顶:
Android从入门到精通3.19例子中编写的ListView范例,按照书上的代码敲完运行后抛出异常:

07-05 15:42:45.050: E/AndroidRuntime(862): FATAL EXCEPTION: main
07-05 15:42:45.050: E/AndroidRuntime(862): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.listviewuse/com.example.listviewuse.MainActivity}: java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.

意思是说添加header view 前setAdapter已经使用,我们知道添加header view 、使用适配器 、添加footer view 必须严格按顺序定义。我也是这么做得。:
代码:
package com.example.listviewuse;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {


@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ListView listview=(ListView)findViewById(R.id.listview1);
        listview.addHeaderView(line());
        
        ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this,R.array.ctype,android.R.layout.simple_list_item_1);
        
        listview.setAdapter(adapter);
        
        listview.addFooterView(line());
        
        listview.setOnItemClickListener(
         new OnItemClickListener()
         {
         public void onItemClick(AdapterView<?> parent,View v,int pos,long id)
         {
         String result=parent.getItemAtPosition(pos).toString();
         Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();
         }
         });
    }
    
    private View line()
    {
     ImageView view=new ImageView(this);
     view.setImageResource(R.drawable.line1);
     return view;
    }
    
}
为什么会出现上述错误,另外,我把 listview.addHeaderView(line());这句代码删除后就能正确显示了?为什么?
分享到:
精彩评论 1
无语_mrkj
学分:3155 LV11
2013-07-15
沙发
您直接把光盘中的源程序导入到eclipse中运行试试。如果也出现问题,那可能是您的开发环境与书中使用的不一致,您使用的开发环境都是哪些版本?
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照