【发布时间】:2015-04-28 23:00:14
【问题描述】:
我希望从 JSON 内容创建一个列表。这是我的适配器代码:
public class AnswersAdapter extends ArrayAdapter<Answer> {
static Context context;
static int layoutResourceId;
Answer data[] = null;
public AnswersAdapter(Context context, int layoutResourceId, Answer[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
AnswerHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new AnswerHolder();
holder.txtTitle = (TextView)row.findViewById(R.id.answerText);
holder.txtTitle2 = (TextView)row.findViewById(R.id.answerAuthor);
holder.txtTitle3 = (TextView)row.findViewById(R.id.answerVotes);
row.setTag(holder);
}
else
{
holder = (AnswerHolder)row.getTag();
}
Answer hold = data[position];
holder.txtTitle.setText(Html.fromHtml(hold.text));
holder.txtTitle2.setText(hold.author);
holder.txtTitle3.setText(hold.votes);
return row;
}
static class AnswerHolder
{
TextView txtTitle;
TextView txtTitle2;
TextView txtTitle3;
}
}
我正面临这个错误:
java.lang.NullPointerException:尝试从空对象引用上的字段“java.lang.String com.example.shivam.stackoverflow.Answer.text”读取
在这一行
holder.txtTitle.setText(Html.fromHtml(hold.text));
【问题讨论】:
-
“我该如何解决这个问题?”确保变量
hold不是null。 -
看起来您的 data 为空。检查您是否正确初始化它。
-
更准确地说,
data数组中有空值。 (data[position]正在评估null以获得一些position值。) -
@Melquiades 不幸的是,
data不能为空。如果是这样,NPE 将发生在Answer hold = data[position]行。所以肯定是data引用的数组包含null的值。 -
@TedHopp 你认为如果我检查每个 if(data[position]!=null){...} 会解决这个问题吗?
标签: java android nullpointerexception adapter