如何使用存储在 sqlite 数据库中的数据填充我的列表

问题描述

我目前正在开发 Xamarin 表单应用程序。这个想法是从 API 获取数据,用户将能够查看食谱、将其添加到收藏夹和搜索

我在显示我的收藏夹项目列表时遇到了一些问题。我无法将我的数据查看到我的列表中,不确定我是否正确插入到表格中。我会尽可能多地发布相关代码。我将不胜感激:)

在这里我点击添加到收藏按钮 - DBManager.cs

     public void Button_Clicked(System.Object sender,System.EventArgs e)
    {

        //add to favoritelist
        dbModel.insertNewTodo(temp);


    }

这里是insertNewTodo函数DBManager.cs

private sqliteAsyncConnection _connection;
    private ObservableCollection<Pancake>temp;
    public DBManager()
    {
        _connection = DependencyService.Get<IsqliteDb>().GetConnection();

    }

    public async Task<ObservableCollection<Pancake>> CreateTable()
    {
        await _connection.CreateTableAsync<Pancake>();
        //get
        var pancake = await _connection.Table<Pancake>().ToListAsync();
        var allTasks = new ObservableCollection<Pancake>(pancake);
        
        return allTasks;
    }

这是最喜欢的页面应该显示煎饼列表但没有:/ :((( FavePage.xaml.cs

ObservableCollection<Pancake> allPancakes;
public FavePage()
{
    InitializeComponent();



}
 





protected async override void OnAppearing()
{
    
    allPancakes = await dbModel.CreateTable();             
    allFaveTable.ItemsSource = allPancakes;
    base.OnAppearing();

}

这里是 FavePage.xaml

<StackLayout>
    <StackLayout Orientation="Horizontal">
        
        <Button Text="Delete"  />
    </StackLayout>
    <ListView x:Name="allFaveTable">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextCell Text="{Binding Name}" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackLayout>

解决方法

看起来您还没有将 ListView 的 ItemsSource 绑定到 observable 集合。将 ObservableCollection 设为包含 StackLayout 的页面的公共属性,并在 ListView 中使用 x:Bind 将 ListView 的 ItemsSource 绑定到 ObservableCollection。