Можно ли использовать ListView без ListActivity в Mono Android? - PullRequest
7 голосов
/ 29 апреля 2011

Я пытаюсь реализовать активность с ListView среди других виджетов.Поэтому, если я правильно понимаю, я не могу использовать ListActivity (потому что он показывает только один большой ListView, который мне не подходит).

Я нашел много разных примеров того, как сделать это в Java из SO, например , это или , это или отличный пример .
I 'мы пытались сделать то же самое, но это не работает правильно.Мне любопытно, есть ли эта функциональность в моно Android вообще?

Я нашел только один пример использования ListView в моно Android, который this , и этот пример описывают использование только ListActivity.

Итак, мой макет:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
android:id="@+id/widget36"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
    <ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    </ListView>
</TableLayout>

My OnCreate:

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.CreateUser);

        JavaList<string> somadata = new JavaList<string> { "111", "222", "333" };

        ListView view = FindViewById<ListView>(Resource.Id.list);
        view.Adapter = new ArrayAdapter<string>(this, Resource.Layout.CreateUser, somadata);
        view.TextFilterEnabled = true;          
    }

1 Ответ

9 голосов
/ 29 апреля 2011

Я только что нашел решение. У меня была ошибка в этой строке:

view.Adapter = new ArrayAdapter<string>(this, Resource.Layout.CreateUser, somadata);

Эта тема мне очень помогает.

Вот еще один список макетов, которые Вы можете использовать .

Источники предопределенных макетов здесь .

Итак, есть два варианта, как исправить ошибку и заставить ListView работать без ListActivity в Mono Android.
Во-первых:
Просто скопируйте / вставьте макет стандартного ресурса с именем simple_list_item_1:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:paddingLeft="6dip"
    android:minHeight="?android:attr/listPreferredItemHeight"
/>

Второй (я уверен, что это лучший способ):
Просто используйте стандартный ресурс. В Android Mono это называется Android.Resource.Layout.SimpleListItem1
Итак, моя обновленная версия OnCreate, которая отлично работает:

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.CreateUser);

        JavaList<string> somadata = new JavaList<string> { "111", "222", "333" };

        ListView view = FindViewById<ListView>(Resource.Id.list);
        view.Adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, somadata);
    }
...