ListView - findviewbyid返回null

时间:2015-12-27 14:24:19

标签: android listview

我知道有很多这样的问题,但每个答案都是这样的:你缺少setContentView()。

这是我的java代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pending_invoice);

    invoices = new PendingInvoices().getListInvoices();
    fillList();
}

private void fillList() {
    ListAdapter dataAdapter = new PendingInvoiceAdapter(this, R.layout.pending_invoice_row, invoices);
    ListView listView = (ListView) findViewById(R.id.invoice_list_view);
    listView.setAdapter(dataAdapter);
}

每次NullPointerException上的listView.setAdapter(dataAdapter);停止。

如您所见,我在setContentView()方法上onCreate

我的activity_pending_invoice包含名为invoice_list_view的ListView:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView
    android:id="@+id/invoice_list_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/dark_gray"
    />

</LinearLayout>

pending_invoice_row只是一个LinearLayout,只有一个Textview

有人知道什么是错的吗?这就像一场噩梦!

1 个答案:

答案 0 :(得分:0)

对于那些会遇到同样问题的人:

检查堆栈跟踪,您可能会找到以下行:

Caused by: java.lang.NullPointerException
11-29 20:26:28.327: E/AndroidRuntime(786): at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330).

这意味着您传递给List的{​​{1}}为空。

我不知道为什么android会将ListAdapter显示为null,但我很高兴它现在有效:)

感谢对我的问题的评论,它有很多帮助。感谢this question and answer