2013-04-30 71 views
0

我有一个表格布局,我从数据库中显示一些数据。 我已将表格布局的行保留为可点击的状态,因为我希望在用户单击该行后在列表视图中显示与该行相关的数据库中的所有详细信息。 后点击m到处的IllegalStateException异常 ...获取列表视图的illegalStateException

04-30 11:17:03.982: E/AndroidRuntime(9466): java.lang.IllegalStateException: ArrayAdapter requires the resource  ID to be a TextView 
04-30 11:17:03.982: E/AndroidRuntime(9466):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386) 
04-30 11:17:03.982: E/AndroidRuntime(9466):  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362) 
04-30 11:17:03.982: E/AndroidRuntime(9466):  at android.widget.AbsListView.obtainView(AbsListView.java:2159) 
04-30 11:17:03.982: E/AndroidRuntime(9466):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1246) 
04-30 11:17:03.982: E/AndroidRuntime(9466):  at android.widget.ListView.onMeasure(ListView.java:1158) 
04-30 11:17:03.982: E/AndroidRuntime(9466):  at android.view.View.measure(View.java:15513) 
04-30 11:17:03.982: E/AndroidRuntime(9466):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4827) 
04-30 11:17:03.982: E/AndroidRuntime(9466):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
04-30 11:17:03.982: E/AndroidRuntime(9466):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
04-30 11:17:03.982: E/AndroidRuntime(9466):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 

任何人有任何想法的问题是什么?请帮忙!

列表视图的代码:

settings = getSharedPreferences("LandTshare", MODE_PRIVATE); 
    prefEditor = settings.edit(); 

    rowid=settings.getInt("rowid", 0); 

    WayDataBase way=new WayDataBase(getApplicationContext()); 

    ArrayList<String> listvalues=way.getListDetails(rowid); 
    if(listvalues.size()!=0) 
    { 
     ListView lv=getListView(); 
     ListAdapter adapter=new ArrayAdapter<String>(ListViewDetails.this, R.layout.view_animal_entry,listvalues); 
     lv.setAdapter(adapter); 
    } 

view_animal_entry.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" > 
    <TextView 
    android:id="@+id/animalId" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:visibility="gone" /> 

    <TextView 
     android:id="@+id/animalName" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="5dp" 
     android:layout_marginTop="5dp" 
     android:paddingLeft="6dip" 
     android:paddingTop="6dip" 
     android:textColor="#A4C739" 
     android:textSize="17sp" 
     android:textStyle="bold" /> 

</LinearLayout> 
+2

邮编节 – 2013-04-30 06:03:58

+0

PLZ发布一些代码... – 2013-04-30 06:06:30

+0

@ ling.si已经发布的代码列表视图和适配器 – shivani 2013-04-30 06:33:16

回答

1

我想你应该从

ListAdapter adapter=new ArrayAdapter<String>(ListViewDetails.this, R.layout.view_animal_entry,listvalues); 

改变您的线路以这

ListAdapter adapter=new ArrayAdapter<String>(ListViewDetails.this, R.layout.view_animal_entry, R.id.animalName, listvalues); 

这应该工作。您必须指定textview id才能显示数据。

+0

现在m没有找到资源在放置行'ListAdapter adapter = new ArrayAdapter (ListViewDetails.this,android.R.id.text1,R.layout.view_animal_entry,listvalues);' – shivani 2013-04-30 06:45:11

+0

再次阅读答案。 在您的布局中定义的android.R.id.text1处提供textview ID R.layout.view_animal_entry – 2013-04-30 06:46:16

+0

哎呀对不起我的坏!但即使将id作为R.id.animalName(你可以在我编辑的文章中的xml文件)它仍然显示资源未找到异常...'04-30 12:20:51.362:E/AndroidRuntime(29307) : android.content.res.Resources $ NotFoundException: 资源ID#0x7f0a0154类型#0x12无效 ' – shivani 2013-04-30 06:56:56

0

ArrayAdapter构造函数中,textViewResourceId必须引用一个TextView资源ID。

你能告诉我们你的代码,并确保它是这样吗?

从javadoc的措施:

默认情况下,这个类预期所提供的资源ID引用单个TextView的。 如果要使用更复杂的布局,请使用也需要字段 id的构造函数。该字段ID应在较大的布局资源中引用TextView。

编辑:你第二个问题是ListView with rows containing a LinearLayout

可能重复看来,你可以使用默认的ID避免这种Resources$NotFoundException: Resource ID #0x7f0a0154 type #0x12 is not valid消息:

在布局XML:

<TextView android:id="@android:id/text1"/> 

并在您的代码:

ListAdapter adapter=new ArrayAdapter<String>(ListViewDetails.this, android.R.id.text1, R.layout.view_animal_entry,listvalues); 

(我不知道为什么给定的ID不会在这种情况下工作)

+0

现在m到处资源未发现异常把线'ListAdapter适配器=新ArrayAdapter后(ListViewDetails.this,android.R.id.text1,R.layout.view_animal_entry,listvalues);' – shivani 2013-04-30 06:44:28

+0

尝试更改'android.R.id.text1'到'R.id.animalName' – 2013-04-30 07:00:47

+0

是的,我做到了。 ..但即使将ID作为R.id.animalName(你可以在我编辑后的xml文件中)它仍然显示资源未找到异常... 04-30 12:20:51.362:E/AndroidRuntime(29307):android.content.res.Resources $ NotFoundException:Resource ID#0x7f0a0154类型#0x12无效 – shivani 2013-04-30 07:01:32