2014-04-11 13 views
9

Próbowałem ten poradnik http://windrealm.org/tutorials/android/android-listview.php „A Simple Android ListView przykład”java.lang.IllegalStateException: ArrayAdapter wymaga identyfikatora zasobu być TextView

Ale w moim teście w Eclipse Mam awarię w aplikacji Android.

W LogCat mam to:

04-11 20:17:24.170: E/AndroidRuntime(7062): 
java.lang.IllegalStateException: ArrayAdapter requires the resource ID 
to be a TextView 

Dlaczego katastrofa?

klasy Java

private ListView mainListView; 
private ArrayAdapter<String> listAdapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mains); 

     mainListView = (ListView) findViewById(R.id.mainListView); 

     String[] xRemote = Remote.split(";"); 

     ArrayList<String> planetList = new ArrayList<String>(); 

     planetList.addAll(Arrays.asList(xRemote)); 

     listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, 
       planetList); 

     listAdapter.addAll(xRemote); 

     mainListView.setAdapter(listAdapter); 

mains.xml

<?xml version="1.0" encoding="utf-8"?> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <ListView android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/mainListView"> 
     </ListView  
    </LinearLayout> 

simplerow.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/rowTextView" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:textSize="16sp" > 
    </TextView> 

</LinearLayout> 

Odpowiedz

24

Zastosowanie

listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, 
    R.id.rowTextView, planetList); 

documentation mówi:

Domyślnie ta klasa spodziewa się, że przewidziane odniesienia id zasobu pojedynczy TextView. Jeśli chcesz użyć bardziej złożonego układu, użyj konstruktorów , który również pobiera identyfikator pola. Identyfikator pola powinien mieć wartość odwołania do obiektu TextView w większym zasobie układu.

1

W simplerow.xml remo ve się LinearLayout i korzystać bezpośrednio TextView jako root

Powiązane problemy