2 andriod132 andriod132 于 2016.01.21 17:25 提问

安卓控件和持有者模式,出现空指针异常

错误提示空指针异常,本人看了好几遍没找到,望大神们指点

public class MainActivity extends Activity {
List list=new ArrayList();
ListView lv=null;
EditText et=null;
Button btn=null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    list.add(new Person("张三","男",22));
    list.add(new Person("李四","男",22));

    lv=(ListView) findViewById(R.id.lv);
    et=(EditText) findViewById(R.id.et);
    btn=(Button) findViewById(R.id.btn);



    lv.setAdapter(new MyAdapter());

}
class MyAdapter extends BaseAdapter{

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

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        View v=convertView;
        MyWrapper wrapper=null;
        if(v==null){
                v=LayoutInflater.from(MainActivity.this).inflate(R.layout.linearlayout, null);
                wrapper=new MyWrapper(v);
                v.setTag(wrapper);
        }
        else{
            wrapper=(MyWrapper) v.getTag();
        }
        TextView tvname=wrapper.getTvname();
        TextView tvsex=wrapper.getTvsex();
        TextView tvage=wrapper.getTvage();
        tvname.setText(list.get(position).getName());
        tvsex.setText(list.get(position).getSex());
        tvage.setText(list.get(position).getAge()+"");
        return v;



   }

}
class MyWrapper{
TextView tvname=null;
TextView tvsex=null;
TextView tvage=null;
View v=null;

    public MyWrapper(View v) {
        super();
        this.v = v;
    }

    public TextView getTvname(){
        if(tvname==null){
            tvname=(TextView) v.findViewById(R.id.tvname);  
        }
        return tvname;
    }
    public TextView getTvsex(){
        if(tvsex==null){
            tvname=(TextView) v.findViewById(R.id.tvsex);   
        }
        return tvsex;
    }
    public TextView getTvage(){
        if(tvage==null){
            tvage=(TextView) v.findViewById(R.id.tvage);    
        }
        return tvage;
    }
}

}

7个回答

devmiao
devmiao   Ds   Rxr 2016.01.21 18:02

加上一点调试的信息,才好帮你判断,有对象为null

q3733353520
q3733353520   2016.01.21 18:01

在可能出现的地方打印一些信息,来缩小范围

andriod132
andriod132   2016.01.21 18:03

图片说明

andriod132
andriod132   2016.01.21 18:03

图片说明

andriod132
andriod132   2016.01.21 18:03

图片说明

q3733353520
q3733353520 很明显,getView返回的是个NULL
2 年多之前 回复
qq_27665781
qq_27665781   Rxr 2016.01.21 17:40

就不能把log截出来吗,?

91program
91program   Ds   Rxr 2016.01.21 17:50

如果代码没有问题,可能是代码与 XML 匹配出现问题,如控件 ID。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android 控件 空指针问题
今天遇到一个特别奇葩的空指针, 控件有声明 有初始化 也没有在声明出写上=null; 但就是一运行,点击button就崩了 报错:空指针异常一般情况,空指针异常是没有初始化,或者控件有属性错误等一些小问题,这些虽然都派出了,但是万万没想到,坑是自己造下的 就在图中的绿色部分, 引用的文件和activity写混了,(这是修改以后的) 因为是直接复制的, 然后显然的是,因为你的布局
空指针异常可能出现的原因
一般报java.lang.NullPointerException的原因有以下几种: ·字符串变量未初始化; ·接口类型的对象没有用具体的类初始化,比如: List lt; 会报错 List lt = new ArrayList(); 则不会报错了 ·当一个对象的值为空时,你没有判断为空的情况。 你可以试着把下面的代码前加一行代码: if(rb!=null);
空指针异常常见原因
空指针异常出现在对引用类型的操作上,当引用变量指向为空仍然去操作它的方法和属性时。 1、当在栈区声明了引用类型的变量,而未让该引用变量指向堆区的内存时(即只声明未初始化),再操作该引用变量则出空指针错。如下例: Map m; //因m没有初始化(m = new HashMap()),所以m仍是空指针。 m.get("one"); 2、既声明又初始化了引用变量,但操作该引用变量的语句
synchronize和生产者消费者模式
1. synchronize关键字     synchronize可以用来对方法或者代码块加锁,使得被加锁的代码在同一时间只能被单个线程访问。     Java中,每个对象都有一个对象锁,简单的说就是每个对象都可以作为一把锁来使用,将synchronized关键字作用于一个对象,就是将该对象作为锁来锁住一段代码。将synchronized作用于一个方法其实就是使用当前类的实例作为锁对象来锁住方
JAVA出现空指针异常(初学者)
在初学JAVA时,讲到面向对象就会出现空指针异常的情况。这是很常见很普通的错误,鉴于最近代码报错都是这个原因。 故收集一些资料方法备用。(java.long.nullpointerexception 空指针异常) 在面向对象的语言中,指针也是对象的引用。而空指针,就是指针的内容为空(也可以理解为这个指针没有指向一块内存)。由于这是一个空的指针,指向了声明类型的类的空对象,所以你在应用这个对象的
JSP空指针异常问题
运行环境:MyEclipse 2016 CIJSP登陆页面用<jsp:forward page=URL>出现问题:HTTP Status 500 - /forward.jsp (line: 2117, column: 5) Expecting "jsp:param" standard action with "name" and "value" attributes type Exception r
equals方法出现空指针异常
在写一个功能时,需要根据用户的类型,返回到不同的页面,当用户的类型为空时,则报空指针异常,写法如:if(xxx.getType().equals('XX')){xxx}, 此时需要将equals 写成if('xx'.equals(xxx.getType())),此时type为null或空也不会报错。
整合dubbo、maven、spring、mybatis的服务提供者消费者调用错误示例
服务消费者调用服务提供者的getUser(int id)方法,出现空指针异常。
getServletContext()空指针异常的原因
getServletContext()空指针异常的原因getServletContext()空指针异常的原因getServletContext()空指针异常的原因getServletContext()空指针异常的原因getServletContext()空指针异常的原因
极其简单的一个JSP小功能+空指针异常Bug解析(内容更新)
说在前面 由于是从昨晚才开始更新的博客,要到工作室锁门的时间就匆忙上传了,上传完之后发现还有一些没弄完的,本来想今天更新一下内容,在登录的时候脑抽,新注册了一个CSDN用户,结果原来用QQ绑定的用户取消关联了,于是乎只好复制过来重新发表,那么以后我在CSDN上的用户名就是Renexton了,原来的已经没法登陆上去,只能舍弃了(悲伤的表情.jpg)