我设置自定义ListView布局时的NPE

时间:2014-05-28 10:10:30

标签: android listview

我为listview创建了自定义布局,但是当我运行应用时,它会崩溃,而logcat会说:NPE。知道为什么会这样吗?

Cutomized_layout“在布局文件夹里面”

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv"
android:textColor="@android:color/holo_purple"
android:layout_width="fill_parent"
android:gravity="center"
android:layout_height="fill_parent"/>

代码:

ListView mList = (ListView) findViewById(R.id.list);
    ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(getApplicationContext(),
            R.layout.listviewlayout, android.R.id.text1, str);

logcat的:

05-28 13:01:18.197: E/AndroidRuntime(31484): FATAL EXCEPTION: main
05-28 13:01:18.197: E/AndroidRuntime(31484): java.lang.NullPointerException
05-28 13:01:18.197: E/AndroidRuntime(31484):    at   
android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:392)
05-28 13:01:18.197: E/AndroidRuntime(31484):    at  
android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
05-28 13:01:18.197: E/AndroidRuntime(31484):    at 
android.widget.AbsListView.obtainView(AbsListView.java:2627)
05-28 13:01:18.197: E/AndroidRuntime(31484):    at 
android.widget.ListView.measureHeightOfChildren(ListView.java:1259)

2 个答案:

答案 0 :(得分:2)

你应该改变这个

ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(getApplicationContext(),
        R.layout.listviewlayout, android.R.id.text1, str);

ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(getApplicationContext(),
        R.layout.listviewlayout, R.id.tv, str);

您需要将listviewlayout TextView ID android:id="@+id/tv"作为ArrayAdapter

的第三个参数传递

答案 1 :(得分:0)

请试试这个:

ListView mList = (ListView) findViewById(R.id.list);
ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(getApplicationContext(),
        R.layout.listviewlayout, R.id.tv, str);
相关问题