ArrayAdapter getView 返回 NullPointerException -

2014-12-15 9:25:49     人阅读    

ArrayAdapter getView 返回 NullPointerException

andorid新手,刚入门2个星期,我在开发中使用  ArrayAdapter getView  ,每次都返回 NullPointerException ,处理过很多次,尝试过很多解决方法都不减小


我在 holder.CardContent.setText(card.getString("content"));代码中得到空指针异常 NullPointerException in 

我试过把  layoutInflater 从null换成  parent,但是没起作用

 

CardAdapter.java

public class CardAdapter extends ArrayAdapter<ParseObject> {
    protected Context mContext;
    protected List<ParseObject> mCards;

    public CardAdapter(Context context, List<ParseObject> cards) {
        super(context, R.layout.card_item, cards);

        mContext = context;
        mCards = cards;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView == null) {
            convertView = LayoutInflater.from(mContext).inflate(R.layout.card_item, null);
            holder = new ViewHolder();

            holder.CardContent = (TextView) convertView.findViewById(R.id.cardText);
        } else{
            holder = (ViewHolder) convertView.getTag();
        }

        ParseObject card = mCards.get(position);

        holder.CardContent.setText(card.getString("content")); // <-- NPE here.

        return convertView;
    }

    private static class ViewHolder{
        TextView CardContent;
    }
}

Logcat日志报错如下:
at com.kardapps.lifehacks.activities.CardAdapter.getView(CardAdapter.java:64)
at android.widget.AbsListView.obtainView(AbsListView.java:2255)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
at android.widget.ListView.onMeasure(ListView.java:1175)
.......

java android nullpointerexception android-arrayadapter


 

处理方法

最佳答案:

你需要在你的if块中设置 set convertView 标签

if (convertView == null)
{
convertView = LayoutInflater.from(mContext).inflate(R.layout.card_item, null);
holder = new ViewHolder();

holder.CardContent = (TextView) convertView.findViewById(R.id.cardText);

// 在这里设置 holder
convertView.setTag(holder);
}


你同样需要在else块中设置,你需要接受这个tag并转化成viewHolder,如果你不设置,获得的肯定是null


原文地址:http://www.itmmd.com/201412/319.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android “setOnItemClickListener” and “setOnClickListener” 方法有什么不同   上一篇
下一篇  ActionBar 在特定的Fragment区域中显示数据(ActionBar display a item in an specific Fragment?)
精彩回复
#1楼    ; [评论人]:xmlslpy   [发表时间]:2014-12-16 16:52:16

这个.... 我无语了... 基本的holder模式,处理listview经常使用 不过,如果你觉得这么使用比较烦,推荐你一个通用Adapter: http://www.joanzapata.com/base-adapter-helper/

我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!