如何基于SQLite数据库动态生成最多5行的Xamarin ListView
代码调整实现方案
修正现有代码的语法错误、逻辑不匹配问题,即可实现最多展示5条数据库记录的需求,具体调整点如下:
- 调整数据库查询逻辑,从数据源层限制返回条数
避免加载全量数据库数据,在Database.cs中将原有取数方法替换为带条数限制的实现:public Task<List<Person>> GetPeopleAsync() { // 按主键排序保证取数顺序稳定,最多返回5条记录 return _database.Table<Person>() .OrderBy(person => person.ID) .Take(5) .ToListAsync(); } - 补全数据库实例的初始化流程
原代码未给Database类传入合法的数据库存储路径,也没有正确创建可全局访问的数据库实例。可在App.xaml.cs中增加单例初始化逻辑:
注意:使用Path和Environment类需要在文件头部引入using System.IO;命名空间public partial class App : Application { // 全局可访问的数据库实例 public static Database DatabaseInstance { get; private set; } public App() { InitializeComponent(); // 拼接本地数据库文件的合法路径 var dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "people.db3"); // 完成数据库初始化 DatabaseInstance = new Database(dbPath); MainPage = new MainPage(); } // 其余原有应用逻辑保持不变 } - 删除无效的残缺代码
移除MainPage.xaml.cs中语法不完整、逻辑错误的冗余方法:// 以下这段残缺代码直接删除即可 // public Task> GetPropertiesAsync() // { // return database.Table().ToListAsync(); // } - 修正主页面的数据源绑定逻辑
修改OnAppearing方法中的调用,正确从数据库取数并绑定到ListView:protected override async void OnAppearing() { base.OnAppearing(); // 自动加载最多5条数据库记录,生成对应ListView行 saved_properties_list.ItemsSource = await App.DatabaseInstance.GetPeopleAsync(); }
调整完成后,页面每次显示时,会自动从SQLite数据库读取记录生成对应的ListView行,最多展示5条数据。因为在数据库查询阶段就完成了条数限制,相比加载全量数据后再在内存中截断的方式性能更好。
内容的提问来源于stack exchange,提问作者user10292318
相关产品推荐
相关产品推荐

