2012-08-23 74 views
0

所以我想要在同一個佈局上的按鈕下面填充一個ListView。基本上,當選擇ListView選項時,按鈕將對每個選定的選項作出不同的響應。問題在於它關閉了一個Force,並且這似乎是填充ListView時的一個問題。按鈕下的ListView

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background" 
    > 
<Button 
    android:background="@drawable/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="15dp" 
    android:layout_gravity="center" 
    android:id="@+id/button"/> 

    <ListView 
    android:listSelector="#990000" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_marginTop="10dp" 
    android:id="@+id/listview" 
    /> 
</LinearLayout> 

代碼:

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

    setContentView(R.layout.main); 

    lv = (ListView) findViewById(R.id.listview); 

    ArrayList<String> list = new ArrayList<String>(); 
    soundsList.add("one"); 
soundsList.add("two"); 
soundsList.add("three"); 



    ArrayAdapter<String> arrayAdapter =  
      new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, list); 
      lv.setAdapter(arrayAdapter); 

的logcat的讀數是這樣的:

08-23 10:21:23.735: ERROR/AndroidRuntime(588): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 

我試圖準確android.R.id.list它說在一個ArrayAdapter ...( 。我嘗試了很多其他的東西,包括一個擴展的ListActivity,但是無論我嘗試什麼,我似乎都得到了類似的Logcat響應。有沒有更好的方法來實現我想要完成的目標?我想要ListView上方的按鈕都在同一個main.xml中。

在此先感謝。

編輯:

我也試過這段代碼。目前已註釋掉,但這是我最初嘗試的。

setListAdapter(new ArrayAdapter<String>(this, android.R.id.list,LIST)); 

    ListView listView = getListView(); 
    listView.setTextFilterEnabled(true); 

LIST是一個字符串數組。從上面的代碼Logcat上的輸出是與以前相同。

+0

LogCat錯誤描述瞭如何修復本身,Nick提供了更詳細的答案。我建議將'id'改爲Nick的代碼。 – Sam

回答

1

聽起來像你要麼試圖實現一個ListActivity或ListFragment,它希望找到一個具有特定名稱的列表視圖實例,因此是錯誤。嘗試從改變你的列表視圖的id:

android:id="@+id/listview" 

到:

android:id="@android:id/list" 

我知道你說你已經嘗試過這一點,但考慮到你的代碼,它看起來像它仍然是錯誤的。一旦你改變它可以發佈新的錯誤信息?根據你的描述,我意識到這將是一個類似的信息,但即使差異很小,它可能仍然很重要。

編輯:

我只注意到另一件事 - 如果你確實使用ListActivity或FragmentActivity,通過調用getListView() instead of findViewById()`得到裁判ListView控件。

+0

感謝您的回覆。是的,我給了這個一個鏡頭,我只是試了一遍。改變它,然後嘗試只更改lv findViewById(android.R.id.list)並編譯得到相同的錯誤。然後將ArrayAdapters更改爲(android.R.id.list)。這是Logcat在第二秒後的輸出 – steven

+0

08-23 10:51:05.215:ERROR/AndroidRuntime(651):引起:java.lang.RuntimeException:你的內容必須有一個ListView,它的id屬性是'android.R.id .list' – steven

+0

你能確認你正在使用ListActivity或ListFragment嗎?看起來確實如此。 – Nick