将适配器设置为listview时出现空指针异常

时间:2016-03-16 12:37:23

标签: android listview nullpointerexception

我有自定义适配器的列表视图。我的代码运行良好,但我将它部署到它开始崩溃的真实设备上。下面的行是我到目前为止的完整代码。

  

java.lang.NullPointerException:尝试在空对象引用上调用接口方法'int java.util.List.size()'

正好在这一行上出现此错误

  

mlistView.setAdapter(myAdapterObj);

到目前为止我做了什么。

这是我的适配器的完整代码 DbContentAdapter.java //我的适配器类

public class DbContentAdapter extends ArrayAdapter<MyCustomData> {
Typeface tf;


public DbContentAdapter(Context context, List<MyCustomData> contentsItemss) {
    super(context, 0, contentsItemss);
    tf = Typefaces.get(context,"nastaleeqnumaregular");

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // Get the data item for this position
    MyCustomData ContentsItems = getItem(position);
    // Check if an existing view is being reused, otherwise inflate the view
    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.content_list_items, parent, false);
    }
    // Lookup view for data population
    TextView tvName = (TextView) convertView.findViewById(R.id.tvName);
    TextView tvNum = (TextView) convertView.findViewById(R.id.tvContentNum);
    TextView tvUrduName = (TextView) convertView.findViewById(R.id.tvUrduName);

    ImageView imageView = (ImageView) convertView.findViewById(R.id.iv_contents);
    // Populate the data into the template view using the data object
    tvUrduName.setTypeface(tf);
    //tvName.setTypeface(tf);
    tvName.setText(ContentsItems.getTopicName());
    tvUrduName.setText(ContentsItems.getTopicUrduName());

    tvNum.setText(ContentsItems.getId()+"");
    imageView.setImageResource(R.drawable.list_next_icon);
    // Return the completed view to render on screen
    return convertView;
}}

我只分享我的适配器代码,因为我认为这里有一些不妥之处。在活动中,我尝试跟踪代码,但似乎很好。

我已经尝试过使用Asynctask,但所有其他内容都是相同的,并且错误与使用asynctask相同或不同。

更新1:这就是我创建适配器的方式。

        listUrduScienceEncyclopedia = customDbHelper.getDBData();
        contentAdapter = new DbContentAdapter(DbContentsActivity.this, listUrduScienceEncyclopedia);

    if(contentAdapter!=null) {
                    mlistView.setAdapter(contentAdapter);
                }

请帮我理解这个错误。

2 个答案:

答案 0 :(得分:0)

您传递给适配器的listUrduScienceEncyclopedia似乎为null。检查一下。

答案 1 :(得分:0)

尝试这样。我用它来创建一个构造函数,同时制作自定义适配器。而且你已经传递了0而不是id用于布局(即super(context, 0, contentsItemss)。如果我错了,请纠正我

public class DbContentAdapter extends ArrayAdapter<MyCustomData> {
Typeface tf;
List list ;
Activity context;


public DbContentAdapter(Context context, List<MyCustomData> contentsItemss) {
super(context, R.layout.content_list_items, contentsItemss);
this.list = contentsItemss;
this.context = context;
tf = Typefaces.get(context,"nastaleeqnumaregular");

}