在尝试按照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方法的参数有关。
答案 0 :(得分:1)
尝试android.R.layout.simple_list_item_1
。
<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");
您可能想要考虑您希望在活动之间分享哪些信息。使用多个活动将允许您的用户按下后退按钮并返回原始列表。