2012-03-03 37 views
2

我想使用列表视图,并创建了自己的布局以在列表视图中显示数据。这里是我的代码:用于显示列表视图的布局错误

public class ListActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ListView listView = (ListView) findViewById(R.id.mylist); 
     String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
      "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
      "Linux", "OS/2" }; 

     // First paramenter - Context 
     // Second parameter - Layout for the row 
     // Third parameter - ID of the View to which the data is written 
     // Forth - the Array of data 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
//#1   android.R.layout.list_item, android.R.id.text1, values); 

// LIST_ITEM是我创建了一个包含文本视图和大小

 // Assign adapter to ListView 
     listView.setAdapter(adapter); 
    } 
} 

但上线#1,我得到一个错误

​​ 布局

我也创建了如下所示的list_item.xml文件。

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp" 
    android:textSize="16sp"> 


</TextView> 

我哪里错了?
从@ByteMe得到答案。现在没有错误,但在运行时出现以下错误。我复制logcat的内容,这就是我得到的:

E/AndroidRuntime( 384): Uncaught handler: thread main exiting due to uncaught e 
xception 
E/AndroidRuntime( 384): java.lang.NullPointerException 
E/AndroidRuntime( 384):  at android.widget.ArrayAdapter.createViewFromRes 
ource(ArrayAdapter.java:353) 
E/AndroidRuntime( 384):  at android.widget.ArrayAdapter.getView(ArrayAdap 
ter.java:323) 
E/AndroidRuntime( 384):  at android.widget.AbsListView.obtainView(AbsList 
View.java:1274) 
E/AndroidRuntime( 384):  at android.widget.ListView.measureHeightOfChildr 
en(ListView.java:1147) 
E/AndroidRuntime( 384):  at android.widget.ListView.onMeasure(ListView.ja 
va:1060) 
E/AndroidRuntime( 384):  at android.view.View.measure(View.java:7964) 
E/AndroidRuntime( 384):  at android.view.ViewGroup.measureChildWithMargin 
s(ViewGroup.java:3023) 
E/AndroidRuntime( 384):  at android.widget.LinearLayout.measureChildBefor 
eLayout(LinearLayout.java:888) 
E/AndroidRuntime( 384):  at android.widget.LinearLayout.measureVertical(L 
inearLayout.java:350) 
E/AndroidRuntime( 384):  at android.widget.LinearLayout.onMeasure(LinearL 
ayout.java:278) 
E/AndroidRuntime( 384):  at android.view.View.measure(View.java:7964) 
E/AndroidRuntime( 384):  at android.view.ViewGroup.measureChildWithMargin 
s(ViewGroup.java:3023) 
E/AndroidRuntime( 384):  at android.widget.FrameLayout.onMeasure(FrameLay 
out.java:245) 
E/AndroidRuntime( 384):  at android.view.View.measure(View.java:7964) 
E/AndroidRuntime( 384):  at android.widget.LinearLayout.measureVertical(L 
inearLayout.java:464) 
E/AndroidRuntime( 384):  at android.widget.LinearLayout.onMeasure(LinearL 
ayout.java:278) 
E/AndroidRuntime( 384):  at android.view.View.measure(View.java:7964) 
E/AndroidRuntime( 384):  at android.view.ViewGroup.measureChildWithMargin 
s(ViewGroup.java:3023) 
E/AndroidRuntime( 384):  at android.widget.FrameLayout.onMeasure(FrameLay 
out.java:245) 
E/AndroidRuntime( 384):  at android.view.View.measure(View.java:7964) 
E/AndroidRuntime( 384):  at android.view.ViewRoot.performTraversals(ViewR 
oot.java:763) 
E/AndroidRuntime( 384):  at android.view.ViewRoot.handleMessage(ViewRoot. 
java:1633) 
E/AndroidRuntime( 384):  at android.os.Handler.dispatchMessage(Handler.ja 
va:99) 
E/AndroidRuntime( 384):  at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime( 384):  at android.app.ActivityThread.main(ActivityThrea 
d.java:4363) 
E/AndroidRuntime( 384):  at java.lang.reflect.Method.invokeNative(Native 
Method) 
E/AndroidRuntime( 384):  at java.lang.reflect.Method.invoke(Method.java:5 
21) 
E/AndroidRuntime( 384):  at com.android.internal.os.ZygoteInit$MethodAndA 
rgsCaller.run(ZygoteInit.java:860) 
E/AndroidRuntime( 384):  at com.android.internal.os.ZygoteInit.main(Zygot 
eInit.java:618) 
E/AndroidRuntime( 384):  at dalvik.system.NativeStart.main(Native Method) 

I/Process ( 59): Sending signal. PID: 384 SIG: 3 
I/dalvikvm( 384): threadid=7: reacting to signal 3 
I/dalvikvm( 384): Wrote stack trace to '/data/anr/traces.txt' 

现在有什么问题?

回答

3

尝试使用,而不是

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    R.layout.list_item, R.id.text1, values); 

android.R.layout.list_item 

,似乎帮我

+0

您的建议已删除该错误。但是现在我得到了log cat中的运行时错误。 logcat的第一行表示“threadid = 3线程以未捕获的异常退出”。 – Ashwin 2012-03-03 01:58:33

0

因为没有人回答问题的第二部分(的第一部分问题由@ByteMe回答),我会自己回答这个问题(通过列表视图基础知道后得到答案)。 anser很简单。
只需从Adapter构造函数中删除可选参数(第三个参数)即可。