2013-04-07 57 views
0

我搜索了其他主題,得出的結論是我的列表視圖是空指針異常的原因,但我無法修正它。獲取與列表視圖的空指針異常setadapter

這裏是我的XML文件

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

<ListView 
    android:id="@+id/instantme_check_list" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_weight="2.88" > 
</ListView> 

留出休息,使其少混亂和我的代碼是

public class instantme_check extends Activity { 
    InputStream is = null; 
    TextView name; 
    TextView content; 
    EditText entername; 
    EditText entercontent; 
    private ListView list; 
     ... 

    name = (TextView) findViewById(R.id.instantme_check_name); 
    content = (TextView) findViewById(R.id.instantme_check_message); 
    entername = (EditText) findViewById(R.id.instantme_check_entername); 
    entercontent = (EditText) findViewById(R.id.instantme_check_entermessage); 
    list = (ListView) findViewById(R.id.instantme_check_list); 
     ... 

    listAdapter4 = new displayadapter4(); 
    list.setAdapter(listAdapter4); 

爲顯示適配器類(我已經把它用在其他兩個部分代碼和它的工作,所以我認爲它很好)

public class displayadapter4 extends ArrayAdapter<String> { 
    displayadapter4() 
    { 
     super(instantme_check.this, R.layout.row, R.id.label, course); 
    }  
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     View row = super.getView(position, convertView, parent); 
     TextView size1 = (TextView) row.findViewById(R.id.size); 
     size1.setText("Subject: " + subject[position]); 
     TextView size2 = (TextView) row.findViewById(R.id.size2); 
     size2.setText("Message: " + message[position]); 
     TextView size3 = (TextView) row.findViewById(R.id.size3); 
     size3.setText("From: " + user[position]); 

     return(row);   
    } 

} 

它不斷給予空指針抗原雖然我放入arrayadapter的數據我確信沒問題,因爲我使用Log.i來驗證它。

至於我的錯誤日誌

04-07 00:33:10.714: W/dalvikvm(273): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
04-07 00:33:10.734: E/AndroidRuntime(273): FATAL EXCEPTION: main 
04-07 00:33:10.734: E/AndroidRuntime(273): java.lang.NullPointerException 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
04-07 00:33:10.734: E/AndroidRuntime(273): at com.Assist.assistme.instantme_check$displayadapter4.getView(instantme_check.java:172) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.AbsListView.obtainView(AbsListView.java:1315) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.ListView.makeAndAddView(ListView.java:1727) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.ListView.fillDown(ListView.java:652) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.ListView.fillFromTop(ListView.java:709) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.ListView.layoutChildren(ListView.java:1580) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.AbsListView.onLayout(AbsListView.java:1147) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.view.View.layout(View.java:7035) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.LinearLayout.onLayout(LinearLayout.java:1042) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.view.View.layout(View.java:7035) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.view.View.layout(View.java:7035) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.LinearLayout.onLayout(LinearLayout.java:1042) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.view.View.layout(View.java:7035) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.view.View.layout(View.java:7035) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.view.ViewRoot.performTraversals(ViewRoot.java:1045) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.os.Looper.loop(Looper.java:123) 
04-07 00:33:10.734: E/AndroidRuntime(273): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-07 00:33:10.734: E/AndroidRuntime(273): at java.lang.reflect.Method.invokeNative(Native Method) 
04-07 00:33:10.734: E/AndroidRuntime(273): at java.lang.reflect.Method.invoke(Method.java:521) 
04-07 00:33:10.734: E/AndroidRuntime(273): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-07 00:33:10.734: E/AndroidRuntime(273): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-07 00:33:10.734: E/AndroidRuntime(273): at dalvik.system.NativeStart.main(Native Method) 
04-07 00:33:12.884: D/dalvikvm(289): GC_EXTERNAL_ALLOC freed 806 objects/57952 bytes in 66ms 

對不起,我真的長的職務。提前致謝。

編輯: row.xml

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

    <TextView 
     android:id="@+id/label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Large Text" 
     android:textSize="20sp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/size" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="" 
     android:textSize="10sp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/size2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" " 
     android:textSize="10sp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 
     <TextView 
     android:id="@+id/size3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="" 
     android:textSize="10sp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 


</LinearLayout> 
+0

哪一行是instantme_check.java:172? – m0skit0 2013-04-07 00:51:11

+0

'row.xml'實際上是否帶有@ @ id/label'的TextView? – Sam 2013-04-07 00:55:08

+0

@ m0skit0:第173行是View row = super.getView(position,convertView,parent); – Shadow 2013-04-07 02:19:20

回答

0

根據您的logcat:

java.lang.NullPointerException 
    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 

的問題是,你傳遞給ArrayAdapter的超級構造,在這裏查看ID:

super(instantme_check.this, R.layout.row, R.id.label, course); 

不存在於您的佈局中,您可以通過source code請確切瞭解如何以及爲何導致NullPointerException。

解決方案很簡單:使用不同的ID或將此TextView添加到您的佈局。

+0

通過查看ID你是指R.id.label?我在應用程序的另外兩個部分中有一個此代碼的副本,他們也使用row.xml,就像這樣,它們工作正常。這就是爲什麼我對這個感到困惑。編輯:我嘗試使用另一個ID,仍然給出了同樣的錯誤。 – Shadow 2013-04-07 02:22:41

+0

我在row.xml中創建了一個全新的TextView,它起作用!我選擇這個作爲最好的答案,因爲它給了我提示找到它。非常感謝:) – Shadow 2013-04-07 02:44:19

+0

我很高興我的建議將您引向解決方案,感謝您接受它。我看到你發佈了'row.xml',它有一個TextView和'@ + id/label' ...有時候Eclipse會感到困惑,也許你只需要清理你的項目。但是你現在有代碼,所以沒關係。 – Sam 2013-04-07 14:46:57