3

我创建了一个扩展 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?提前致谢。

4

2 回答 2

2

如果你进入NullPointerException这条线

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

这意味着它v是空的,因为如果找不到 TextViewnull将被返回并被NullPointerException抛出

name_text.setText(colValue);

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

编辑 你应该在 newView 中返回的内容是

return inflater.inflate(R.layout.<name of your xml>, parent, false);
于 2011-10-20T08:01:31.107 回答
0

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

于 2014-02-15T00:24:59.843 回答