2013-12-12 37 views
1

我在嘗試運行實現ListView的Android活動時出現問題,使用20個元素填充它並顯示它:活動在啓動時崩潰。Android listview trouble

下面是相關logcat的錯誤:

You must supply a resource ID for a TextView 
FATAL EXCEPTION: main 
java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView 
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386) 
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362) 
at android.widget.AbsListView.obtainView(AbsListView.java:2177) 
at android.widget.ListView.measureHeightOfChildren(ListView.java:1247) 
at android.widget.ListView.onMeasure(ListView.java:15848) 
at android.widget.RelativeLayout.measureChild(RelativeLayout.java:698) 
at android.widget.RelativeLayout.onMeasure(ListView.java:1159) 
at android.view.View.measure(View.java:15848) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012) 
at android.app.ActivityThread.main(ActivityThread.java:5013) 
Caused by: java.lang.ClassCastException: android.widget.ListView cannot be cast to android.widget.TextView. 
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:382) 

ThirdActivity.java

package com.example.logger; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

public class ThirdActivity extends ListActivity implements OnClickListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_third); 
     final ListView listview = (ListView) findViewById(android.R.id.list); 
     String[] values = new String[] {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", 
       "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen", 
       "Twenty"}; 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_third, android.R.id.list, values); 
     setListAdapter(adapter); 


    } 

     @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.third, menu); 
     return true; 

     } 

     public void attachButton() 
     { 
      findViewById(R.id.add).setOnClickListener(this); 

     } 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

     } 
} 

末的.java

而且佈局:

Activity_third.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".ThirdActivity" > 

    <Button 
     android:id="@+id/add" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:text="@string/add" 
     /> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_below="@+id/add" 
     android:layout_height="wrap_content" 

      ></ListView> 

</RelativeLayout> 

末的.xml

你能告訴我什麼,我需要改變,以得到它的基礎上,logcat的錯誤日誌工作?

非常感謝您的幫助。

此致,

毛羅。

回答

1

ArrayAdapter需要的資源ID是一個TextView

這只是意味着,你必須提供一個TextView佈局作爲參數。適配器將這個TextView綁定到您的數據。但是,您目前正在將您的佈局傳入ListView

所以更改此設置:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_third, android.R.id.list, values); 

這樣:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values); 
+0

非常感謝你:現在的作品完美!但有一個小問題:它不允許我向下滾動列表。我讀過ListView允許滾動,但也許我錯過了一些東西來實現它? – user3082271

+0

只有滾動到某個ListView時纔會滾動。有些項目是否被切斷,因此沒有被顯示? – Ahmad

+0

正確。它顯示爲「八」,但沒有低於它:我嘗試拉雙方,但沒有任何反應。難道我做錯了什麼? – user3082271