xamarin android - listView永远不会填充

时间:2014-06-20 09:53:44

标签: listview android-listview xamarin xamarin.android

我有一个字符串数组,如下所示:

string[] uuids = new string[]{
                fashionUUID,
                foodUUID,
                electricalUUID,
                sportsUUID,
                financeUUID,
                homeGardenUUID,
                hairUUID,
                propertyUUID,
                giftsUUID,
                jewelleryUUID,
                footwareUUID

和列表视图:

ListView uuidListView = FindViewById<ListView> (Resource.Id.uuidList);

然后我点击按钮时尝试在ListView中显示值。但是,我的listView永远不会填充任何内容。有人可以帮忙吗?

button.Click += (object sender, EventArgs e) => 
   {
        SetContentView (Resource.Layout.UUIDlist); //changes the layout

        var adapter = new ArrayAdapter<string> (this, Resource.Id.uuidList, uuids);

   };

我的包含listView的布局文件看起来像这样(非常简单):

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:p1="http://schemas.android.com/apk/res/android"
    p1:orientation="vertical"
    p1:minWidth="25px"
    p1:minHeight="25px"
    p1:layout_width="match_parent"
    p1:layout_height="match_parent"
    p1:id="@+id/linearLayout1">
    <ListView
        p1:minWidth="25px"
        p1:minHeight="25px"
        p1:layout_width="match_parent"
        p1:layout_height="wrap_content"
        p1:id="@+id/uuidList" />
</LinearLayout>

构建时我没有遇到任何错误,我的listView中没有显示任何内容。我也尝试过使用JavaList而不是字符串数组,但是我希望得到相同的结果。在构建/填充listview时,我是否遗漏了一些明显的东西?

2 个答案:

答案 0 :(得分:0)

试试这个:

button.Click += (object sender, EventArgs e) =>
{
     .......

     ListView uuidListView = FindViewById<ListView> (Resource.Id.uuidList);
     var adapter = new ArrayAdapter<string> (this, Resource.Id.uuidList, uuids);
     uuidListView.Adapter = adapter; 
};

答案 1 :(得分:0)

问题是ArrayAdapter构造函数的第二个参数是布局文件的资源ID,其中包含在实例化视图时使用的布局而不是listview的ID({{ 1}})在屏幕布局中。

为简单起见,您可以重复使用内置布局,即uuidList

所以,在你的按钮点击事件中,它应该是这样的:

Android.Resource.Layout.SimpleListItem1

button.Click += delegate { var listview = FindViewById<ListView>(Resource.Id.uuidList); var adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, Android.Resource.Id.Text1, uuids); listview.Adapter = adapter; }; Android.Resource.Id.Text1内的TextView内容的ID。