填充列表视图时的android异常

时间:2011-03-13 22:35:00

标签: android listview switch-statement

在尝试按照switch语句的结果填充ListView中的项目时,我遇到了某种错误。应用程序在仿真器内部关闭,当我通过Eclipse调试器运行它时,它显示主线程由于IllegalStateException而挂起。

除了它意味着它已进入某种错误的状态,我该如何解决?我正在尝试从OnItemClickListener中执行所有这些操作,因此当单击该项时,switch语句将评估单击了哪个项目,然后根据交换机的结果将相应的ListAdapter分配给ListView。这是正确的方法吗?如果是这样,我下面的代码中会出现什么错误?

final ListView lv = (ListView) findViewById(R.id.main_list);
    final String[] autos = getResources().getStringArray(R.array.auto_array);
    final ListAdapter la_auto = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_2, autos);

然后在涉及onclicklistener

的部分进一步向下
 gallery.setOnItemClickListener(new OnItemClickListener()
    {
        public void onItemClick(AdapterView parent, View v, int position, long id)
        {
            switch(gallery.getSelectedItemPosition())
            {
            case 0:
                lv.setAdapter(la_auto);
                break;

编辑:LogCat堆栈跟踪在此错误处停止,“您必须为TextView提供资源ID,此时堆栈已挂起:ArrayAdapter.createViewFromResource(int,View,ViewGroup,int)行:347

有什么建议吗?我想它与我传递给onItemClicked方法的参数有关。

2 个答案:

答案 0 :(得分:1)

尝试android.R.layout.simple_list_item_1

答案在simple_list_item_2.xml

<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android"
    ...

您需要使用仅包含TextView的资源。 simple_list_item_1.xml适合该法案:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    ...

如果您没有看到任何您喜欢的内容,请尝试浏览其他可能性here或制作您自己的可能性。

答案 1 :(得分:0)

使用新的Activity和适配器开始新的ListView可能会更好。

您可以将所选项目作为参数传递到Intent

Intent = new Intent(MyActivity.this, ActivityToStart.class);
intent.putExtra("selected", position);
startActivity(intent);

稍后在其他活动的onCreate方法中使用以下内容检索它:

int position = getIntent().getIntExtra("selected");

您可能想要考虑您希望在活动之间分享哪些信息。使用多个活动将允许您的用户按下后退按钮并返回原始列表。