ListArray和List View,从解析器填充列表

时间:2012-02-08 20:22:35

标签: android

我正在尝试编写一个解析器来解析总线路由的HTML时间。 但我有一个问题让列表出现一个while循环。 我是否使用

Content = extractor.BusRoutes.get(0);
Content = extractor.BusRoutes.get(1);

我可以通过在android中使用文本视图让它们显示在列表中,但我想要一个列表。

如果我去,我可以获得一份清单

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, busroutearray));

但是,如果我已经填充了这些项目的XML,我无法轻易使用。

我现在正在做的循环是

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



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

    int x = 0;
    while(x > 37){
        busroutearray.add(x, extractor.BusRoutes.get(x));
    x++;
    }

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, busroutearray));

我无法弄清楚它为什么不显示,有更好的方法吗? “x”是数组中从0到37的点。

这是LogCat

02-08 16:45:27.222: D/dalvikvm(1882): GC_EXTERNAL_ALLOC freed 52K, 54% free 2487K/5379K, external 1596K/2108K, paused 46ms
02-08 16:45:32.320: D/AndroidRuntime(1882): Shutting down VM
02-08 16:45:32.320: W/dalvikvm(1882): threadid=1: thread exiting with uncaught exception (group=0x40015578)
02-08 16:45:32.324: E/AndroidRuntime(1882): FATAL EXCEPTION: main
02-08 16:45:32.324: E/AndroidRuntime(1882): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.taylordev.nextstop/com.taylordev.nextstop.BusRoutes}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.os.Looper.loop(Looper.java:123)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.app.ActivityThread.main(ActivityThread.java:3687)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at java.lang.reflect.Method.invokeNative(Native Method)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at java.lang.reflect.Method.invoke(Method.java:507)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at dalvik.system.NativeStart.main(Native Method)
02-08 16:45:32.324: E/AndroidRuntime(1882): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.app.ListActivity.onContentChanged(ListActivity.java:243)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:212)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.app.Activity.setContentView(Activity.java:1657)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at com.taylordev.nextstop.BusRoutes.onCreate(BusRoutes.java:50)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-08 16:45:32.324: E/AndroidRuntime(1882):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
02-08 16:45:32.324: E/AndroidRuntime(1882):     ... 11 more

2 个答案:

答案 0 :(得分:0)

int x = 0;
    while(x > 37){
        busroutearray.add(x, extractor.BusRoutes.get(x));
    x++;
    }

您永远不会进入循环,因为您有x=0,然后将while循环中的条件设置为 x&gt; 37 (这是假的)。也许你想尝试 x&lt; 37 实际进入你的循环。

修改 对于该例外,您的活动BusRoutes可能会延伸ListActivity,并且您使用setContentView()设置了不同的布局,这种布局没有正确的ListView元素。如果您扩展ListActivity并使用方法setContentView()设置不同的布局,则在该布局中,您必须具有ID的<{1}}元素:

ListView

这样android系统就可以知道哪个android:id="@android:id/list" 元素绑定到ListView。如果这不能解决异常,请发布ListActivity的代码,至少是BusRoutes方法。

答案 1 :(得分:0)

您的代码中的一个错误是您永远不会输入while语句,因为条件x > 37永远不会为真(在开头变量x为0)。