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

很奇怪的问题,先保存下来在,找时间来想想问什么!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;

    }



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值