我如何创建一个listview对象Android

时间:2012-03-16 02:27:30

标签: android listview

嗨,所以我想要做的就是当玩家输掉比赛时,一个高分榜单出现了以listView形式占据屏幕的一半。我试图使用从我的xml中膨胀的listview对象我不知道如何做到这一点。

我试过了:

LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

ListView lv = (ListView) inflater.inflate(R.id.highscores,null);

但它一直告诉我lv为空

继承人我的xml:     

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

<com.SpaceShot.single android:id="@+id/single1"
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content">

 </com.SpaceShot.single>

<ListView android:id="@+id/highScores"
 android:layout_width="wrap_content"
 android:layout_height="200dp"
 android:padding="15dp"
 android:visibility= "invisible"
 >
</ListView>
</FrameLayout>

编辑:

现在膨胀ListView可以工作,但是我收到了这个错误:

03-15 23:05:01.351: ERROR/AndroidRuntime(2555): Uncaught handler: thread Thread-11 
exiting due to uncaught exception
03-15 23:05:01.371: ERROR/AndroidRuntime(2555): android.view.InflateException: Binary
 XML file line #9: Error inflating class java.lang.reflect.Constructor
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at 
android.view.LayoutInflater.createView(LayoutInflater.java:512)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:564)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at 
android.view.LayoutInflater.rInflate(LayoutInflater.java:617)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at 
android.view.LayoutInflater.inflate(LayoutInflater.java:407)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at 
android.view.LayoutInflater.inflate(LayoutInflater.java:320)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at
android.view.LayoutInflater.inflate(LayoutInflater.java:276)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at 
com.SpaceShot.single$singleThread.doDraw(single.java:503)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at 
com.SpaceShot.single$singleThread.run(single.java:1754)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555): 
Caused by: 
java.lang.reflect.InvocationTargetException
03-15 23:05:01.371: ERROR/AndroidRuntime(2555): at com.SpaceShot.single.<init>
(single.java:1922)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):  at 
java.lang.reflect.Constructor.constructNative(Native Method)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at     
java.lang.reflect.Constructor.newInstance(Constructor.java:446)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at 
android.view.LayoutInflater.createView(LayoutInflater.java:499)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     ... 7 more
03-15 23:05:01.371: ERROR/AndroidRuntime(2555): 
Caused by: java.lang.RuntimeException:
Can't create handler inside thread that has not called Looper.prepare()
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at android.os.Handler.<init>
(Handler.java:121)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at android.view.SurfaceView$1.
<init>(SurfaceView.java:107)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     at android.view.SurfaceView.<init>
(SurfaceView.java:105)
03-15 23:05:01.371: ERROR/AndroidRuntime(2555):     ... 11 more

1 个答案:

答案 0 :(得分:2)

LayoutInflater用于扩充布局,因此您需要执行以下操作才能获得正确的结果:

LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View layout = (View)inflater.inflate(R.layout.your_layout,null);

ListView v = (ListView)layout.findViewById(R.id.highscores);