2012-04-11 13 views
2

Ich versuche, eine ListView in einem ViewStub zu erstellen, aber ich bekomme weiterhin eine NullPointerExeption. Meine Schaltflächen funktionieren wie beabsichtigt in ViewStub. Der Code, der wie folgt ausfällt:NullPointerExeption bei Verwendung von ListView in einem ViewStub

else if(v.getId() == R.id.comments_button_series_view){ 
    if(stubUsed == false){ 

     stub = (ViewStub) findViewById(R.id.stub); 
     View inflatedStub = stub.inflate(); 

     String[] comments = new String[]{"comment1", "comment2"}; 
     commentsAdapter = new ArrayAdapter<String>(this, 
            R.layout.patient_list_element, 
            R.id.comments_list_comments_view, comments); 
     commentsList = (ListView)findViewById(R.id.comments_list_comments_view); 
     commentsList.setAdapter(commentsAdapter); 

Ich denke, es Failes bei commentsList.setAdapter (commentsAdapter).

Diese XML-Datei mit dem Inhalt des ViewStub, die die Listview hält, ist wie folgt:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/comment_stub" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/settings_background" > 

    <Button 
     android:id="@+id/comments_button_comment_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="62dp" 
     android:text="Add comment" /> 


    <ListView 
     android:id="@+id/comments_list_comments_view" 
     android:layout_width="match_parent" 
     android:layout_height="470dp" 
     android:layout_alignLeft="@+id/pin_button_comments_view" 
     android:layout_below="@+id/comments_button_comment_view" > 

    </ListView> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignRight="@+id/comments_button_comment_view" 
     android:layout_marginRight="119dp" 
     android:text="COMMENTS" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <Button 
     android:id="@+id/pin_button_comments_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/comments_button_comment_view" 
     android:layout_alignBottom="@+id/comments_button_comment_view" 
     android:layout_marginRight="30dp" 
     android:layout_toLeftOf="@+id/comments_button_comment_view" 
     android:text="Add Pin" /> 

    <Button 
     android:id="@+id/hide_button_comments_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/pin_button_comments_view" 
     android:layout_alignParentBottom="true" 
     android:layout_marginBottom="10dp" 
     android:text="Hide" /> 

</RelativeLayout> 

ich den Code für das Listview getestet haben, ohne einen viewstub zu verwenden, und das funktioniert ganz gut.

Ich denke, ich habe alles? Jede Hilfe wird geschätzt! :)

EDIT:

Danke für die schnelle Antwort!

Der Inhalt wird in der Ansicht angezeigt, in der der ViewStub aufgebläht ist. Aber wie gesagt, es funktioniert gut mit Tasten, aber ich bekomme nicht, warum ich einen Nullpointer mit dem ListView bekomme! :(

Hier ist das Ergebnis aus der LogCat:

04-11 10:37:55.400: W/dalvikvm(971):  threadid=1: thread exiting with uncaught exception (group=0x40014760) 
04-11 10:37:55.450: E/AndroidRuntime(971): FATAL EXCEPTION: main 
04-11 10:37:55.450: E/AndroidRuntime(971): java.lang.NullPointerException 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:396) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:366) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.AbsListView.obtainView(AbsListView.java:1964) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.ListView.makeAndAddView(ListView.java:1756) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.ListView.fillDown(ListView.java:656) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.ListView.fillFromTop(ListView.java:716) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.ListView.layoutChildren(ListView.java:1609) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.AbsListView.onLayout(AbsListView.java:1794) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.View.layout(View.java:9330) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.View.layout(View.java:9330) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.View.layout(View.java:9330) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.FrameLayout.onLayout(FrameLayout.java:400) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.View.layout(View.java:9330) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.LinearLayout.onLayout(LinearLayout.java:1314) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.View.layout(View.java:9330) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.widget.FrameLayout.onLayout(FrameLayout.java:400) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.View.layout(View.java:9330) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.ViewRoot.performTraversals(ViewRoot.java:1201) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.view.ViewRoot.handleMessage(ViewRoot.java:1944) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.os.Looper.loop(Looper.java:126) 
04-11 10:37:55.450: E/AndroidRuntime(971): at android.app.ActivityThread.main(ActivityThread.java:3997) 
04-11 10:37:55.450: E/AndroidRuntime(971): at java.lang.reflect.Method.invokeNative(Native Method) 
04-11 10:37:55.450: E/AndroidRuntime(971): at java.lang.reflect.Method.invoke(Method.java:491) 
04-11 10:37:55.450: E/AndroidRuntime(971): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
04-11 10:37:55.450: E/AndroidRuntime(971): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
04-11 10:37:55.450: E/AndroidRuntime(971): at dalvik.system.NativeStart.main(Native Method) 

Thanks again :)

Antwort

1

Es scheint ein Fehler zu sein, wenn Sie das ArrayAdapter Objekt erstellen. Der dritte Parameter im Konstruktor (textViewResourceId) sollte ein TextView anstelle von ListView sein.

Ändern Sie das und es sollte funktionieren.

+0

ah, endlich. Danke! Nahm mich einen Monat! – user1326621