关于viewholder总是报Java.lang.NullPointerException。

原创 2015年11月21日 11:17:25

很奇怪的问题,先保存下来在,找时间来想想问什么!viewholder总是报Java.lang.NullPointerException,如果在后面的if else选择加上判断holder!=null的话就会导致list view缓存问题,会出现重复出现之前的item的问题。

<span style="font-weight: normal;">public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.item_rank, null);
            </span><pre name="code" class="java" style="font-size: 14px; font-weight: bold;"><span style="font-weight: normal;"><span style="white-space:pre">	</span>holder.rankingNo = (TextView) convertView.findViewById(R.id.rankingNo);
        holder.photoLogo = (CircleImageView) convertView.findViewById(R.id.photoLogo);
        holder.effortNo = (TextView) convertView.findViewById(R.id.effortNo);
        holder.rankName = (TextView) convertView.findViewById(R.id.rankName);</span>
} else { holder = (ViewHolder) convertView.getTag(); } if (type.equals("popularity") && listPopularity != null &&holder!=null) { RankPopularityResult.Result.Member member = listPopularity.get(position); if (member.mbrType == 0) { ImageLoader.getInstance().displayImage(getImageUrl(member.photoId), holder.photoLogo, options); } else if (member.mbrType == 1) { ImageLoader.getInstance().displayImage(member.wcPhotoPath, holder.photoLogo, options); } NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(); //int转化为钱的类型 holder.rankingNo.setText(String.valueOf(member.ranking)); holder.rankName.setText(member.nickName); holder.effortNo.setText(currencyFormat.format(member.effort)); Log.i("member.nickName", String.valueOf(member.nickName)); } else if (type.equals("company") && listCompany != null&& holder!=null) { Log.i("listCompany", String.valueOf(listCompany)); RankCompanyResult.Result.Member member = listCompany.get(position); ImageLoader.getInstance().displayImage(getImageUrl(member.sequareLogoPhoto), holder.photoLogo, options); // Log.i("", String.valueOf()); NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(); holder.rankingNo.setText(String.valueOf(member.ranking)); holder.rankName.setText(member.companyName); Log.i("member.companyName", String.valueOf(member.companyName)); holder.effortNo.setText(currencyFormat.format(member.effort)); } // Log.i("", String.valueOf());//Java.lang.NullPointerException return convertView; } private class ViewHolder { private TextView rankingNo; private TextView rankName; private TextView effortNo; private CircleImageView photoLogo; }


这是参考google出来的修改后的代码!

<pre name="code" class="java">public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.item_rank, null);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        
        holder.rankingNo = (TextView) convertView.findViewById(R.id.rankingNo);
        holder.photoLogo = (CircleImageView) convertView.findViewById(R.id.photoLogo);
        holder.effortNo = (TextView) convertView.findViewById(R.id.effortNo);
        holder.rankName = (TextView) convertView.findViewById(R.id.rankName);
        if (type.equals("popularity") && listPopularity != null ) {

            RankPopularityResult.Result.Member member = listPopularity.get(position);

            if (member.mbrType == 0) {
                ImageLoader.getInstance().displayImage(getImageUrl(member.photoId), holder.photoLogo, options);
            } else if (member.mbrType == 1) {
                ImageLoader.getInstance().displayImage(member.wcPhotoPath, holder.photoLogo, options);
            }
            NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(); 
            holder.rankingNo.setText(String.valueOf(member.ranking));
            holder.rankName.setText(member.nickName);
            holder.effortNo.setText(currencyFormat.format(member.effort));
            Log.i("member.nickName", String.valueOf(member.nickName));

        } else if (type.equals("company") && listCompany != null ) {
            Log.i("listCompany", String.valueOf(listCompany));
            RankCompanyResult.Result.Member member = listCompany.get(position);
            ImageLoader.getInstance().displayImage(getImageUrl(member.sequareLogoPhoto), holder.photoLogo, options);
            // Log.i("", String.valueOf());
            NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
            holder.rankingNo.setText(String.valueOf(member.ranking));
            holder.rankName.setText(member.companyName);
            Log.i("member.companyName", String.valueOf(member.companyName));
            holder.effortNo.setText(currencyFormat.format(member.effort));
        }
       // Log.i("", String.valueOf());
//Java.lang.NullPointerException
        return convertView;
    }

    private class ViewHolder {
        private TextView rankingNo;
        private TextView rankName;
        private TextView effortNo;
        private CircleImageView photoLogo;

    }



                
版权声明:本文为博主原创文章,未经博主允许不得转载。

app最小化再进进入app发生 java.lang.NullPointerException

我们项目是关于拼车,在
  • coderinchina
  • coderinchina
  • 2014年09月09日 16:08
  • 537

retrofit2+okhttp3+ rxjava 遇到的问题及解决方案

1 。如果项目使用的服务器使用的是自签名证书  就会报如下错误 javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathVali...
  • mgt625
  • mgt625
  • 2016年07月27日 11:38
  • 1620

Retrofit +RxJava2 出现 java.lang.NullPointerException: Null is not a valid element

Retrofit+RxJava2 是目前比较火的框架,公司的代码也集体升级了,但是最近确发现了一个bug,就是如果后台只返回一个响应码,而不返回body的情况下,会出现java.lang.NullPo...
  • ccy8875116
  • ccy8875116
  • 2018年02月05日 20:28
  • 26

Volley框架使用报错:NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException

volley是google在2013年的I/O大会上推出的一个网络通信框架,在请求网络数据的时候,使用volley大大提高了我们的开发效率,但是众所周知使用volley发起POST请求时,我们需要通过...
  • My_First_ID
  • My_First_ID
  • 2016年05月13日 15:00
  • 1170

java.lang.NumberFormatException 错误及解决办法

1. package com.geelou.test; 2.  3. public class ErrTest { 4.    public static void main(String[] ...
  • xiaodongvtion
  • xiaodongvtion
  • 2013年04月22日 17:40
  • 280351

Adapter中常见遇到的NullPointerException

View.inflate():找出 res/layout 下的 xml 布局文件填充到父布局,并且实例化,此时,仅仅在内存中创建了这个对象而已,在界面上不会显示出来这个对象 findViewById...
  • u012585964
  • u012585964
  • 2016年07月05日 23:13
  • 10784

关于viewholder总是报Java.lang.NullPointerException。

很奇怪的问题,先保存下来在,找时间来想想问什么!viewholder总是报Java.lang.NullPointerException,如果在后面的if else选择加上判断holder!=null的...
  • Ser_Bad
  • Ser_Bad
  • 2015年11月21日 11:17
  • 555

关于viewholder总是报Java.lang.NullPointerException。

很奇怪的问题,先保存下来在,找时间来想想问什么!viewholder总是报Java.lang.NullPointerException,如果在后面的if else选择加上判断holder!=null的...
  • Ser_Bad
  • Ser_Bad
  • 2015年11月21日 11:17
  • 555

android ViewHolder 空指针异常

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

关于字符串报java.lang.NullPointerException

今天写一程序,老是报java.lang.NullPointerException. 后来发现是String类的equals方法使用不对,应该是 字符串.equals(变量) 譬如: S...
  • d007letian
  • d007letian
  • 2017年06月02日 15:57
  • 131
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于viewholder总是报Java.lang.NullPointerException。
举报原因:
原因补充:

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