2012-11-10 110 views
2

我想在ListActivity使用一個ArrayAdapter:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.id.text1, new String[] { "a", "b"}); 
setListAdapter(adapter); 

這是佈局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@id/android:text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" /> 

    <ListView 
     android:id="@id/android:list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="false" 
     android:layout_below="@id/android:text1" > 

    </ListView> 

</RelativeLayout> 

我在StackOverflow上找到的解決方案似乎都不起作用。我正在使用API​​ 10.你能幫忙嗎?

回答

3

定義佈局爲您的ListView的行,並調用它,例如,simple_list_item_1(文件夾res/layout在創建文件simple_list_item_1.xml)。把你的TextView到這個佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
    <TextView 
     android:id="@id/android:text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" /> 
</RelativeLayout> 

,然後創建您的ArrayAdapter這樣的:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.simple_list_item_1, R.id.text1, new String[] { "a", "b"}); 

Here,你會發現關於列表和適配器的詳細說明。

+1

這就解決了這個問題 - 也許不像Sam的建議那麼簡單,但是你也向我展示瞭如何自定義列表項。謝謝! –

7

您正在使用錯誤的資源類型,您需要引用R.layout而不是R.id。嘗試android.R.layout.simple_list_item_1

new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[] { "a", "b"}); 
+0

但第二個參數應該是'textViewResourceId' ... –

+0

不,文檔清晰,第二個參數是佈局。也許你正在考慮[this constructor](http://developer.android.com/reference/android/widget/ArrayAdapter.html#ArrayAdapter%28android.content.Context,%20int,%20int,%20T []%29 ):'ArrayAdapter(Context context,int resource,int textViewResourceId,T [] objects)'第三個參數是TextView的id。 – Sam

+1

哇,你是對的!我怎麼錯過了?這實際上是解決問題的最簡單方法。太糟糕了,我不能接受這兩個答案。 –

相關問題