2011-10-20 59 views
3

我創建了一個擴展CursorAdapter的類,我在bindView方法上遇到問題。CursorAdapter上的NullPointerException bindView方法

@Override 
public void bindView(View v, Context context, Cursor c) { 


    int colNum = c.getColumnIndex(VidCallDbAdapter.QRLINK); 
    String colValue = c.getString(colNum); 

    System.out.println("value>> " + colValue); 

    TextView name_text = (TextView) v.findViewById(R.id.qr_url); 

    name_text.setText(colValue); 

} 

即時總是得到一個NullPointerException在這一行

的TextView name_text =(TextView的)v.findViewById(R.id.qr_url);

這很奇怪,因爲我在我的一個xml中定義了qr_url。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/RelativeLayout01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"> 

<TextView android:layout_height="wrap_content" 
      android:text="" 
      android:id="@+id/qr_url" 
      android:gravity="center_vertical" 
      android:layout_width="fill_parent" 
      android:textColor="#000000" 
      android:textSize="12sp"> 
</TextView> 

</LinearLayout> 

我錯過了代碼上的東西,這就是爲什麼它是NullPointerException?提前致謝。

+0

發佈你的'newView(View,Context,Cursor)'也 –

+0

oww它與它有關。我對該方法返回null,因爲即時通訊在我的方法上有異常。這解釋了NullPointerException。謝謝。但我的原始代碼爲@Override \t public View newView(Context context,Cursor cursor,ViewGroup parent){ \t \t final LayoutInflater inflater = LayoutInflater.from(context); \t \t return inflater.inflate(layout,parent,false); // \t \t return null; \t} 我對返回行有異常 – androidnewbie

+0

'layout'是如何定義的?檢查我的編輯 – Vladimir

回答

2

如果你在這行越來越NullPointerException

TextView name_text = (TextView) v.findViewById(R.id.qr_url); 

這意味着v爲null,因爲如果TextView中未發現null將返回並NullPointerException將在

name_text.setText(colValue); 

所以被拋出確保你的public View newView(...)被正確覆蓋。

編輯 你應該在NewView的回報是

return inflater.inflate(R.layout.<name of your xml>, parent, false); 
+0

謝謝。我認爲我的公共View NewView(...)方法存在問題。我故意將null返回給該方法,因爲我認爲這是我遇到的另一個異常的解決方案。最初我的方法是:\t @Override \t public View newView(Context context,Cursor cursor,ViewGroup parent){ \t \t final LayoutInflater inflater = LayoutInflater.from(context); \t \t return inflater.inflate(layout,parent,false); // \t \t return null; \t} 但我有一個例外,在線返回... android.content.res.Resources $ NotFoundException:資源ID#0x0你知道這個的原因嗎? – androidnewbie

+0

這意味着'layout'是0.你可以將它設置爲'layout = R.layout。<你的xml名稱,你在問題中發佈的名稱>'或者我在我的回答中建議通過R.layout。 to'inflater.inflate()' – Vladimir

+0

你是對的。我將我的佈局定義爲layout = R.layout.list_layout_qrurl。現在我在name_text.setText(colValue)中有一個NullPointerException;的bindView方法。 – androidnewbie

0

我有一個類似的問題在那裏bindView()被扔一個NullPointerException。我通過在ListView上調用setEmptyView()來解決這個問題。

相關問題