CursorAdapter bindView方法的NullPointerException

时间:2011-10-20 07:41:31

标签: android android-cursoradapter

我创建了一个扩展CursorAdapter的类,我在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?提前谢谢。

2 个答案:

答案 0 :(得分:2)

如果您在此行中获得NullPointerException

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

这意味着v为空,因为如果找不到TextView,则会返回null并且会抛出NullPointerException

name_text.setText(colValue);

因此,请确保您的public View newView(...)被正确覆盖。

修改 你应该在newView中返回的是

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

答案 1 :(得分:0)

我遇到了类似的问题,其中 bindView()抛出了NullPointerException。我通过在ListView上调用setEmptyView()来解决它。