2013-04-30 38 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