ArrayAdapter的Textview占据了所有屏幕

时间:2011-10-05 06:47:55

标签: android android-layout

ArrayAdapter使用的Textview占据整个屏幕并且“标题”和“描述”没有显示Textviews ...我想在列表前显示它们,帮助吗?

这是我的代码:

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 个答案:

答案 0 :(得分:3)

您之所以这样做,是因为您在ListView中设置了setContentView。而是将其添加到LinearLayout,然后ListView会同时出现TextView android.R.layout.simple_list_item_1您为标题和说明指定的{1}}。

我认为还有一件事,您应该在适配器中使用xml,或者您需要为自定义TextView创建自定义<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>

所以基本上你的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>

你的cusotmized xml将是:

<强> custom_item.xml

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);

然后,

{{1}}

答案 1 :(得分:0)

尝试

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

答案 2 :(得分:0)

如果你想要“标题”和“描述”Textviews而不是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>

在java代码中:

setContentView(R.layouts.yourxml);

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

如果你想要3 TextView的列表项使用服装适配器