2011-10-05 68 views
2

ArrayAdapter使用的Textview佔據了整個屏幕,並且「title」和「description」Textviews沒有顯示......我想在列表前顯示它們,幫助嗎?ArrayAdapter的Textview佔據了所有屏幕

這裏是我的代碼:

TextView titleText = (TextView) this.findViewById(R.id.title); 
titleText.setText(sitesList.getTitle()); 

TextView descriptionText = (TextView) this.findViewById(R.id.description); 
descriptionText.setText(sitesList.getDescription()); 

ArrayList<String> Categories = sitesList.getCategory(); 
ListView lv = new ListView(this); 
lv.setAdapter(new ArrayAdapter<String>(this,R.layout.main,R.id.list_item,Categories)); 
setContentView(lv); 

我的佈局文件是:

<?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="fill_parent" 
android:orientation="vertical"> 
<TextView android:id="@+id/title" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 
<TextView android:id="@+id/description" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 
<TextView android:id="@+id/list_item" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 

謝謝!

回答

3

因爲您將ListView設置在您的setContentView中,而您將其添加到您的LinearLayout,然後您的ListView將與您爲標題和說明指定的兩個TextView一起出現。

還有一兩件事,我想,您應該在適配器使用android.R.layout.simple_list_item_1或者您需要創建自定義xml爲您量身定製TextView和使用,在那裏,然後在你的xml加入

<TextView android:id="@+id/list_item" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

所以基本上你的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="fill_parent" 
android:id="@+id/layout" 
android:orientation="vertical"> 
<TextView android:id="@+id/title" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 
<TextView android:id="@+id/description" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 

和你cusotmized XML是:

custom_item.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="fill_parent" 
android:orientation="vertical"> 
<TextView android:id="@+id/list_item" 
    android:layout_width="fill_parent" 
    android:id="@+id/list_item" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 

所以最後你的適配器的字符串將是:

lv.setAdapter(new ArrayAdapter<String>(this,R.layout.custom_item,R.id.list_item,Categories)); 

然後,

LinearLayout layout=(LinearLayout)findViewById(R.id.layout); 
layout.addView(lv); 
+2

這工作完美,非常感謝你@手稿! :d – miligraf

0

嘗試

LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 
+0

我得到同樣的「無法啓動活動」的錯誤和「強制關閉」窗口:( – miligraf

+0

把一些堆棧跟蹤,所以我們可以告訴你,什麼是錯的 –

+0

放的setContentView第一行,你可以稍後膨脹的列表或放在xml佈局列表 –

0

,如果你想 「標題」 和 「說明」 Textviews,比Java代碼的ListView

<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/title" 
     ... /> 
    <TextView android:id="@+id/description" 
     ... /> 
    <ListView android:id="@+id/list_item" 
     ... /> 
</LinearLayout> 

setContentView(R.layouts.yourxml); 

ListView lv = (ListView) findViewById(...) 
lv.setAdapter(...) 

如果你想與列表項3 TextView使用服裝適配器