我有自定义适配器的列表视图。我的代码运行良好,但我将它部署到它开始崩溃的真实设备上。下面的行是我到目前为止的完整代码。
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);
}
请帮我理解这个错误。
答案 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");
}