Listview自定义适配器类中的问题

时间:2010-10-31 17:26:03

标签: android

我马上解释我的问题。请参阅以下代码段。

@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。我无法追踪,从这个错误弹出的地方。专家,请帮忙。

这方面的帮助非常感谢。

期待, 问候, 罗尼

2 个答案:

答案 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获取一个值,然后在控制台上显示。