【问题标题】:trouble in Hide/show of listview on a click in xamarin android在 xamarin android 中单击时隐藏/显示列表视图的麻烦
【发布时间】:2016-07-11 03:53:33
【问题描述】:

尝试使用 Visual Studio 在 xamarin android 中单击图像时显示和隐藏(切换)列表视图。但它没有隐藏。我在这里做错了什么。 onclick 我无法隐藏和显示列表视图。下面是我的 onclick 代码

 protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.HomeScreen);
            listView = FindViewById<ListView>(Resource.Id.List);

            tableItems.Add(new TableItem() { Heading = "Vegetables", SubHeading = "65 items", ImageResourceId = Resource.Drawable.Vegetables });
            tableItems.Add(new TableItem() { Heading = "Fruits", SubHeading = "17 items", ImageResourceId = Resource.Drawable.Fruits });

            listView.Adapter = new HomeScreenAdapter(this, tableItems);

            listView.ItemClick += OnListItemClick;

            ImageView ImageView = FindViewById<ImageView>(Resource.Id.imageView1);
            //  ListView listView = FindViewById<ListView>(Resource.Id.List);

            ImageView.FindViewById<ImageView>(Resource.Id.imageView1).Click += (object sender, System.EventArgs e) =>
            {
                listView.FindViewById<ListView>(Resource.Id.List).Visibility = Android.Views.ViewStates.Visible;
            };


        }

        protected void OnListItemClick(object sender, Android.Widget.AdapterView.ItemClickEventArgs e)
        {
            var listView = sender as ListView;
            var t = tableItems[e.Position];
            Android.Widget.Toast.MakeText(this, t.Heading, Android.Widget.ToastLength.Short).Show();
            Console.WriteLine("Clicked on " + t.Heading);
        }

我是 android 和 xamarin 的新手。感谢任何帮助。

【问题讨论】:

  • 只使用listView.Visibility 而不是listView.FindViewById&lt;ListView&gt;(Resource.Id.List).Visibility

标签: android listview xamarin


【解决方案1】:

这是错误的......

 ImageView ImageView = FindViewById<ImageView>(Resource.Id.imageView1);

 ImageView.FindViewById<ImageView>(Resource.Id.imageView1).Click += (object sender, System.EventArgs e) =>
 {
     listView.FindViewById<ListView>(Resource.Id.List).Visibility = Android.Views.ViewStates.Visible;
 };

您在第一行获得对图像视图的引用,然后对该视图执行 FindViewById 以获取子视图。除非您将 ImageView 嵌套在另一个 ImageView 中,否则这是行不通的。

你很亲密。这应该可以在没有看到您的布局的情况下工作...

 ImageView imageView = FindViewById<ImageView>(Resource.Id.imageView1);

 imageView.Click += (object sender, System.EventArgs e) =>
 {
     if (listView.Visibility == ViewStates.Visible)
        listView.Visibility = ViewStates.Invisible;
     else
        listView.Visibility = ViewStates.Visible;
 };

FindViewById 是一个昂贵的电话。如果没有必要,尽量不要一遍又一遍。

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多