2013-04-07 4 views
0

Я искал другие темы и пришел к выводу, что мой список был причиной исключения нулевого указателя, но я все равно не могу его исправить.Получение исключения nullpointer с помощью listview 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);   
    } 

} 

Он продолжает давать исключение nullpointer althoug h данные, которые я вставляю в 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 

Извините за очень длительный пост. Заранее спасибо.

EDIT: 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

+0

Имеет ли 'row.xml' фактически TextView с' @ + id/label'? – Sam

+0

@ m0skit0: строка 173 - просмотр строки = super.getView (position, convertView, parent); – Shadow

ответ

0

По вашему LogCat:

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

Проблема заключается в том, что View идентификатор, который вы прошли супер конструктор ArrayAdapter, вот:

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

Не существует в вашем макете, вы можете прочитать source code, чтобы узнать, как и почему это вызывает исключение NullPointerException.

Решение прост: используйте другой идентификатор или добавьте этот TextView в свой макет.

+0

По виду id вы имеете в виду R.id.label? У меня есть копия этого кода в двух других частях приложения, и они также используют row.xml, точно так же, и они отлично работают. Вот почему я так запутался в этом. EDIT: я попытался использовать другой идентификатор, все же дал ту же ошибку. – Shadow

+0

Я создал совершенно новый TextView в row.xml, и он работает! Я выбираю это как лучший ответ, так как он дал мне подсказку, чтобы найти его. Большое спасибо :) – Shadow

+0

Я рад, что мой совет привел вас к решению, спасибо за его принятие. Я вижу, что вы разместили «row.xml», который имеет TextView с «@ + id/label» ... иногда Eclipse запутывается, возможно, вам нужно только очистить ваш проект. Но у вас есть рабочий код, так что это не имеет большого значения. – Sam

Смежные вопросы