首页 > 解决方案 > Listview 项目不显示在 xamarin

问题描述

我有这个作为我的用户界面:

        public EditTextPage()
        {
            BackgroundImageSource = "blue_gradient1";
            this.Title = "Edit Text";

            var db = new SQLiteConnection(_dbPath);

            StackLayout stackLayout = new StackLayout();

            _listView = new ListView
            {
                // template for displaying each item.
                ItemTemplate = new DataTemplate(() =>
                {
                    Label nameLabel = new Label();
                    nameLabel.TextColor = Color.WhiteSmoke;
                    nameLabel.FontSize = 15;
                    nameLabel.SetBinding(Label.TextProperty, "Name");

                    return new ViewCell
                    {
                        View = new StackLayout
                        {
                            Padding = new Thickness(5),
                            VerticalOptions = LayoutOptions.Center,
                            Children =
                    {
                        nameLabel
                    }
                        }
                    };
                })
            };

            //_listView.SeparatorColor = Color.WhiteSmoke;
            _listView.ItemsSource = db.Table<SpeechRecTable>().OrderBy(x => x.Text).ToList();
            _listView.ItemSelected += _listView_ItemSelected;
            stackLayout.Children.Add(_listView);

            _button = new Button();
            _button.Text = "UPDATE";
            _button.BackgroundColor = Color.Coral;
            _button.TextColor = Color.WhiteSmoke;
            _button.Clicked += _button_Clicked;
            stackLayout.Children.Add(_button);

            Content = stackLayout;

这是功能:

        private void _button_Clicked(object sender, EventArgs e)
        {
            var db = new SQLiteConnection(_dbPath);
            SpeechRecTable speech = new SpeechRecTable()
            {
                Id = Convert.ToInt32(_idEntry.Text),
                Text = _textEntry.Text
            };

            db.Update(speech);
            Device.BeginInvokeOnMainThread(async () =>
            {
                var result = await this.DisplayAlert("Edit Item", "Item Successfully Updated. Do you want to edit/update another record?", "Yes", "No");

                if (!result)//left
                {
                    await Navigation.PushAsync(new HomePageX());
                }

                else//right
                {

                }
            });            
        }

        private void _listView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            _speech = (SpeechRecTable)e.SelectedItem;
            _idEntry.Text = _speech.Id.ToString();
            _textEntry.Text = _speech.Text;

        }

上面的所有代码都在一个 .cs 文件中 这是输出的样子:

在此处输入图像描述

如何使文本可见?我在这里做错了吗?我知道我的 sql 数据库中的所有数据都在那里,因为当我选择一个列表视图项目时,该条目中有数据。

标签: xamarin

解决方案


您需要确保NameinSpeechRecTable公共财产


推荐阅读