在Mono Android中,是否可以在没有ListActivity的情况下使用ListView?

7
我正在尝试在其他小部件中实现带有ListView的活动。因此,如果我理解正确,我不能使用ListActivity(因为它仅显示一个大的ListView,这对我来说是可以的)。
我在SO上找到了很多不同的Java示例,比如这个,或者这个,或者这个很好的例子
我尝试以同样的方式进行,但它不能正常工作。我很好奇这个功能在mono android中是否存在?
我只找到了一个在mono android中使用ListView的示例,即这个,而这个示例仅描述了使用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>

我的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

我刚刚找到了解决办法。这一行代码中存在错误:

view.Adapter = new ArrayAdapter<string>(this, Resource.Layout.CreateUser, somadata);
这个话题对我很有帮助。

这里有更多你可以使用的布局。

预定义布局的来源在这里

那么,有两种方法来修复错误并使ListView在Mono Android中无需ListActivity正常工作。
第一:
只需复制标准资源命名为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"
/>

第二种方法(我相信这是最好的方法):
只需使用标准资源。在Mono Android中,它被命名为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);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接