2011-04-29 41 views
7

我正在尝试使用ListView和其他小部件一起实现活动。所以,如果我理解正确,我不能使用ListActivity(因为它只显示一个大的ListView,对我来说没问题)。在Mono Android中可以使用没有ListActivity的ListView吗?

我发现从SO像thisthisgreat example在Java中这样做了很多不同的例子。
我试图以相同的方式做,但它无法正常工作。我很好奇这个功能是否存在于mono android中?

我发现只有一个在单声道android中使用ListView的例子是 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> 

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

回答

9

我找到解决办法。我在这一行中有错误:

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

This主题可以帮助我很多。

这里是一个布局的进一步列表, 你可以use

预定义布局的来源是here

所以,有两个选择如何解决错误,并使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" 
/> 

二(我敢肯定,这是一个最好的方法):
只需使用标准的资源。在单安卓它命名为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); 
    } 
+1

日Thnx。它也工作了4我! – GAMA 2012-02-15 08:58:19

相关问题