ViewHolder模式获取控件空指针异常,小错误很坑爹

原创 2014年07月23日 09:05:08

在用ListView做开发的时候需要集成BaseAdapter类,复写其getView方法,这个想必大家都是知道的。今天在调试的时候偏偏让我遇到一个很折腾人的问题,在ViewHolder模式是用以下方式给TextView控件赋值时报空指针异常:

public View getView(int position, View convertView, ViewGroup parent) {  
ViewHolder holder = null;  
if(holder == null)  
{  
holder = new ViewHolder();  
if(convertView == null)  
{  
convertView = mInflater.inflate(R.layout.inbox_listitem, null);  
System.out.println("convertView----------------->"+convertView);  
}  
holder.image = (ImageView)findViewById(R.id.connecter_image);  
holder.nametxt = (TextView)findViewById(R.id.connecter_name);  
holder.messagetxt = (TextView)findViewById(R.id.connect_message);  
System.out.println("holder.image----->"+holder.image);//此处出现空指针  
System.out.println("holder.nametxt ---->"+holder.nametxt);//此处出现空指针  
System.out.println("holder.messagetxt ---->"+holder.messagetxt);//此处出现空指针  
convertView.setTag(holder);  
}else  
{  
holder = (ViewHolder) convertView.getTag();  
}  
System.out.println("position------------------->" +position);  
System.out.println("mSmsPic.get(position)------------->" +mSmsPic.get(position));  
System.out.println("mContactsName.get(position)------------->" +mContactsName.get(position));  
System.out.println("mContactsmessage.get(position)------------->" +mContactsmessage.get(position));  
holder.image.setImageBitmap(mSmsPic.get(position));  <span style="font-family: simsun;">//此处出现空指针</span>
holder.nametxt.setText(mContactsName.get(position));  <span style="font-family: simsun;">//此处出现空指针</span>
holder.messagetxt.setText(mContactsmessage.get(position));   <span style="font-family: simsun;">//此处出现空指针</span>
return convertView;  
}  


怎么调试都无效,最后被逼无奈改用SimpleAdapter……可是,问题还是在心里纠结着!!BaseAdapter也不是第一次用了,参照以前的code居然也没发现问题,其实还是蛮明显的(都怪老眼昏花,欲哭无泪啊!),都是疏忽大意惹的祸!!

今天闲了,根据现象,百度了一下…… 结果,坑爹啊,原来原因就少添加了一个convertView。参见下面代码:

public View getView(int position, View convertView, ViewGroup parent) {  
ViewHolder holder = null;  
if(holder == null)  
{  
holder = new ViewHolder();  
if(convertView == null)  
{  
convertView = mInflater.inflate(R.layout.inbox_listitem, null);  
System.out.println("convertView----------------->"+convertView);  
}  
holder.image= (ImageView)<span style="color:#ff0000;">convertView</span>.findViewById(R.id.connecter_image);  
holder.nametxt =(TextView)<span style="color:#ff0000;">convertView</span>.findViewById(R.id.connecter_name);  
holder.messagetxt = (TextView) <span style="color:#ff0000;">convertView</span>.findViewById(R.id.connect_message);  
System.out.println("holder.image----->"+holder.image);  
System.out.println("holder.nametxt ---->"+holder.nametxt);  
System.out.println("holder.messagetxt ---->"+holder.messagetxt);  
convertView.setTag(holder);  
}else  
{  
holder = (ViewHolder) convertView.getTag();  
}  
System.out.println("position------------------->" +position);  
System.out.println("mSmsPic.get(position)------------->" +mSmsPic.get(position));  
System.out.println("mContactsName.get(position)------------->" +mContactsName.get(position));  
System.out.println("mContactsmessage.get(position)------------->" +mContactsmessage.get(position));  
holder.image.setImageBitmap(mSmsPic.get(position));  
holder.nametxt.setText(mContactsName.get(position));  
holder.messagetxt.setText(mContactsmessage.get(position));  
return convertView;  
}  

android ViewHolder 空指针异常

android ViewHolder 空指针异常 的时候,需要检测一下几个地方 1)首先确认  public View getView(int position, View convertView...
  • cw2004100021124
  • cw2004100021124
  • 2014年06月07日 17:33
  • 1610

Android开发:getViewById返回null的原因定位

最近在研究开发一些基于Android的App,遇到了一些问题,其中一个比较关键的是在Activity中的onCreate()方法中获取Button对象,代码大概如下:   private Butt...
  • tenfyguo
  • tenfyguo
  • 2015年06月22日 23:06
  • 2222

ViewHolder模式获取控件空指针异常

在用ListView做开发的时候需要集成BaseAdapter类,复写其getView方法,这个想必大家都是知道的。今天在调试的时候遇到一个很折腾人的问题,在ViewHolder模式是用以下方式给Te...
  • linyeban
  • linyeban
  • 2016年09月10日 23:30
  • 773

ListView的Adapter有多个ViewHolder的时候导致的ViewHolder类型转换错误!

问题复现 背景是这样的,我用的CursorAdapter,然后重写了getViewTypeCount方法 @Override public int getViewTypeCount()...
  • u010335298
  • u010335298
  • 2016年09月08日 10:58
  • 1483

ViewHolder模式获取控件空指针异常

在用ListView做开发的时候需要集成BaseAdapter类,复写其getView方法,这个想必大家都是知道的。今天在调试的时候遇到一个很折腾人的问题,在ViewHolder模式是用以下方式给Te...
  • linyeban
  • linyeban
  • 2016年09月10日 23:30
  • 773

JSP空指针异常问题

运行环境:MyEclipse 2016 CIJSP登陆页面用出现问题:HTTP Status 500 - /forward.jsp (line: 2117, column: 5) Expecting ...
  • ending13
  • ending13
  • 2016年05月23日 15:56
  • 352

MyEclipse 部署报错,抛空指针异常的解决办法

某些情况下MyEclipse 可能无法打开 MyEclipse Servers视图, 试图打开视图将导致NPE将被记录。 Could not create the view: An unex...
  • u014136660
  • u014136660
  • 2015年05月12日 20:12
  • 1098

c3p0报空指针异常

javaweb项目使用c3p0连接数据库报空指针异常,但之前同样流程的项目却能正常运行.经检查发现c3p0的配置文件配置是正确的,但在运行时没有加载自定义的配置文件...
  • tom9238
  • tom9238
  • 2016年05月11日 23:45
  • 987

Java中如何处理空指针异常

英文原文地址:http://examples.javacodegeeks.com/java-basics/exceptions/java-lang-nullpointerexception-how-t...
  • Revivedsun
  • Revivedsun
  • 2015年06月21日 13:48
  • 7401

request.getParameter()报错指针挂空,记一次J2EE开发

作者想在本页面用户登陆时显示所有数据,而后用户可通过给定的form表单筛选项对数据进行筛选。 遇到的问题: 1、在用户登录页面自动跳转时使用request.getParameter()得到form...
  • VAEUP
  • VAEUP
  • 2015年10月04日 01:32
  • 731
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ViewHolder模式获取控件空指针异常,小错误很坑爹
举报原因:
原因补充:

(最多只允许输入30个字)