从 SQLite DB 动态创建 ListView 行

Posted

技术标签:

【中文标题】从 SQLite DB 动态创建 ListView 行【英文标题】:Dynamically create ListView rows from SQL Lite DB 【发布时间】:2021-05-01 12:10:40 【问题描述】:

我希望创建一个应用程序,从而根据 SQL 数据库条目自动创建 ListView 行 - 最多 5 个 ListView 行。

人物类:

using SQLite;

namespace AppPeople

    public class Person
    
        [PrimaryKey, AutoIncrement]
        public int ID  get; set; 
        public string Name  get; set; 
        public int Age  get; set; 
    

数据库.cs:

using System.Collections.Generic;
using System.Threading.Tasks;
using SQLite;

namespace AppPeople

    public class Database
    
        readonly SQLiteAsyncConnection _database;

        public Database(string dbPath)
        
            _database = new SQLiteAsyncConnection(dbPath);
            _database.CreateTableAsync<Person>().Wait();
        

        public Task<List<Person>> GetPeopleAsync()
        
            return _database.Table<Person>().ToListAsync();
        

        public Task<int> SavePersonAsync(Person person)
        
            return _database.InsertAsync(person);
        
    

MainPage.xaml:

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="AppPeople.MainPage">
    <ListView x:Name="saved_properties_list">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Orientation="Horizontal" 
                        HorizontalOptions="FillAndExpand"
                        Margin="20, 10, 20, 0" >
                        <Label Text="Binding Name" HorizontalOptions="StartAndExpand" />
                        <Label Text="Binding Age" />
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ContentPage>

MainPage.cs:

        protected override async void OnAppearing()
        
            base.OnAppearing();
            saved_properties_list.ItemsSource = await MainPage.Database.GetPropertiesAsync();
        


public Task> GetPropertiesAsync()

    return database.Table().ToListAsync();

我将如何进行更改,以便根据最多包含 5 个 ListView 行的 SQL DB 条目自动创建 ListView 行?谢谢。

【问题讨论】:

【参考方案1】:

使用 LINQ Take 限制结果数

return _database.Table<Person>().Take(5).ToListAsync();

【讨论】:

以上是关于从 SQLite DB 动态创建 ListView 行的主要内容,如果未能解决你的问题,请参考以下文章

在 SQLite DB 中使用 Drag-Sort ListView

频繁更新 SQLite DB 和 Listview(效率)

如何在片段中访问 SQLite 数据到 ListView

将数据从(设计时未知)SQLite db 动态显示到表视图

Android Sqlite:如何从 Listview 中获取 SQLite rowId?

python在sqlite动态创建表源码