2010-10-31 47 views
1

我正在直接解釋我的問題。請參閱下面的代碼片段。Listview中的問題自定義適配器類

@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得到空。因此,在我嘗試設置文本的緊接着的下一行中,我收到空指針異常。

我已經在xml中正確聲明瞭commentAuthor。我無法追蹤,從這個錯誤彈出。專家,請給予幫助。

對這方面的幫助很受讚賞。

期待, 問候, 羅尼

+0

看起來它無法找到commentViewAuthor裏面的convertView你應該發佈你的comment_row xml。你也可以使用靜態的View.inflate()它的一個小捷徑。 – schwiz 2010-10-31 18:12:36

+0

@ user264953:「我已經在xml中正確聲明瞭commentAuthor。」 - 請發佈佈局XML。 – CommonsWare 2010-10-31 18:31:23

回答

0

確保View.findViewById()被View.onCreate後稱爲(),因爲這是在XML解析。

最好將.findViewById()放入.onCreate()中,並將結果保存在其他地方使用的字段中。

0

我認爲這個問題是在該行:

System.out.println("tvAuthor"+tvAuthor); 

正如您已聲明tvAuthor爲TextView的,此變量指TextView的,而不是它的價值,因此,儘管從TextView的,以顯示值控制檯,你需要寫:

if(! tvAuthor.getText.toString.equalsIgnoreCase("")) 
{ 
    System.out.println("tvAuthor"+ tvAuthor.getText.toString()); 
} 

這樣它會從tvAuthor TextView中獲取一個值,然後顯示在控制檯上。

+0

他仍然會爲電視作者獲得空。 – 2010-11-01 07:49:27