我马上解释我的问题。请参阅以下代码段。
@Override
public View getView(int index, View convertView, ViewGroup parent) {
Comments comment = comments.get(index);
if (convertView == null) {
LayoutInflater inflator = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.comment_row, null);
}
TextView tvAuthor = (TextView) convertView.findViewById(R.id.commentAuthor);
System.out.println("tvAuthor"+tvAuthor);
tvAuthor.setText(comment.getAuthor());
convertView.setTag(comment);
return convertView;
}
我为tvAuthor获取null。结果,在我尝试setText的下一行中,我得到空指针异常。
我已正确地在xml中声明了commentAuthor。我无法追踪,从这个错误弹出的地方。专家,请帮忙。
这方面的帮助非常感谢。
期待, 问候, 罗尼
答案 0 :(得分:0)
确保在View.onCreate()之后调用View.findViewById(),因为这是解析XML的时候。
最好将.findViewById()放在.onCreate()中,并将结果保存在字段中以供其他地方使用。
答案 1 :(得分:0)
我认为问题在于:
System.out.println("tvAuthor"+tvAuthor);
由于您已将tvAuthor声明为TextView ,因此此变量引用textview,而不是其值,因此在从textview向控制台显示值时,您需要编写:
if(! tvAuthor.getText.toString.equalsIgnoreCase(""))
{
System.out.println("tvAuthor"+ tvAuthor.getText.toString());
}
这样它将从tvAuthor TextView获取一个值,然后在控制台上显示。