TextView ArrayAdapter занимает весь экран - PullRequest
2 голосов
/ 05 октября 2011

Textview, используемый ArrayAdapter, занимает весь экран, а текстовые представления "title" и "description" не отображаются ... Я хотел бы показать их перед списком, справка?

Вотмой код:

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 ]

3 голосов
/ 05 октября 2011

Вы получаете это, потому что вы установили ListView в вашем setContentView. Вместо этого добавьте его в LinearLayout, и тогда ваш ListView появится вместе с двумя TextView, указанными вами для заголовка иописание.

Еще одна вещь, я думаю, вы должны либо использовать android.R.layout.simple_list_item_1 в адаптере, либо вам нужно создать пользовательский xml для настроенного TextView и использовать его там, а затем добавить

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

в вашем xml.

Таким образом, в основном ваш 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);
0 голосов
/ 05 октября 2011

, если вы хотите текстовые представления "title" и "description", а затем 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 использовал костюмный адаптер

0 голосов
/ 05 октября 2011

попробуй

LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...