2014-02-17 2 views
-1

Я разрабатываю приложение для Android. Из моего основного действия я перешел бы ко второму, который отобразил бы некоторые данные в виде списка. Моя проблема заключается в добавлении ArrayAdapter в список и добавлении ListView к содержимому деятельности.Android listview issues

Моя вторая деятельность XML является:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/doctorslistview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:gravity="center_vertical" 
    android:paddingLeft="6dip" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
/> 

Деятельность называется: activity_doctors.

код позади:

public class Doctors extends Activity { 

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

    // Show the Up button in the action bar. 
    getActionBar().setDisplayHomeAsUpEnabled(true); 

    ArrayList<Doctor> docs = null; 

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 

    StrictMode.setThreadPolicy(policy); 

    try { 
     String doctors = GetDoctorsFromServer(); 

     docs = GetDoctorsListFromServerString(doctors); 


    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    ListView myListView = new ListView(this); 

    String[] docsArray = new String[docs.size() + 1]; 

    int i = 0; 
    for(Doctor d : docs) 
    { 
     docsArray[i] = d.getDoctorName(); 
     i++; 
    } 

    myListView.setAdapter(new ArrayAdapter<String>(this, R.layout.activity_doctors, 
      R.id.doctorslistview, docsArray)); 


    //setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_doctors, docsArray)); 


    setContentView(myListView); 
} 

The occurres об ошибке, когда последняя команда выполняется: setContentView (MyListView);

Стек след:

02-17 21:51:48.639: E/AndroidRuntime(24298): FATAL EXCEPTION: main 
02-17 21:51:48.639: E/AndroidRuntime(24298): Process: com.example.cabinetmedical.android, PID: 24298 
02-17 21:51:48.639: E/AndroidRuntime(24298): java.lang.NullPointerException 
02-17 21:51:48.639: E/AndroidRuntime(24298): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394) 
02-17 21:51:48.639: E/AndroidRuntime(24298): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362) 
02-17 21:51:48.639: E/AndroidRuntime(24298): at android.widget.AbsListView.obtainView(AbsListView.java:2452) 
02-17 21:51:48.639: E/AndroidRuntime(24298): at android.widget.ListView.makeAndAddView(ListView.java:1891) 
02-17 21:51:48.639: E/AndroidRuntime(24298): at android.widget.ListView.fillDown(ListView.java:792) 
02-17 21:51:48.639: E/AndroidRuntime(24298): at android.widget.ListView.fillFromTop(ListView.java:853) 

Любые идеи кто-нибудь?

Благодаря

+0

Один из элементов в docsArray имеет значение null (потому что docsArray.size() = docs.size() + 1), но это просто догадка bling ... попытайтесь узнать, как использовать отладчик ... и возиться с политика нити - действительно глупая идея – Selvin

+0

Отличный улов. Я даже не думал о том, чтобы искать ошибку. Спасибо –

+0

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ArrayAdapter.java#L394 => 'item.toString() == NPE' =>' item == null ' – Selvin

ответ

0

Это не способ сделать это, вы используете setContentView дважды. Что находится внутри activty_doctors.xml? Должен быть элемент ListView, который вы свяжете с ним с помощью getListView или findViewById.

+0

Я был в середине редактирования. –