Xamarin中用MySQL数据填充ListView时遇空引用异常求助
解决Xamarin中ListView填充数据时的NullReferenceException问题
检查
ExpenseReportCollection是否已实例化
不管使用原生ObservableCollection还是MvvmHelpers的ObservableRangeCollection,必须在调用AddRange前完成实例化。在ViewModel构造函数中初始化集合:public OverviewExpenseReportViewModel() { ExpenseReportCollection = new ObservableRangeCollection<ExpenseReport>(); }仅声明字段/属性但未实例化,会直接触发空引用异常。
确认
db对象是否正确初始化
调用GetDataExpenseReport()前,必须确保DBConnection的实例db已完成初始化:// 直接实例化或通过依赖注入获取有效实例 var db = new DBConnection();db为null时,调用其方法会立即抛出空引用异常。验证
GetDataExpenseReport()的返回值
该方法可能返回null,导致AddRange接收无效参数。修改方法确保返回空集合而非null:public List<ExpenseReport> GetDataExpenseReport() { var queryResult = // MySQL查询逻辑 // 查询无结果时返回空集合,避免返回null return queryResult ?? new List<ExpenseReport>(); }也可在调用前增加空值判断:
var expenseData = db.GetDataExpenseReport(); if (expenseData != null) { ExpenseReportCollection.AddRange(expenseData); }排查
ExpenseReport模型实例是否存在空值
如果GetDataExpenseReport()返回的集合中存在未初始化的ExpenseReport实例,后续绑定ListView时也可能引发异常。在数据映射阶段确保每个模型实例都被正确初始化:// 示例:从DataReader映射数据时实例化每个模型 while (reader.Read()) { var report = new ExpenseReport { Id = reader.GetInt32(0), Amount = reader.GetDecimal(1), // 其他属性赋值 }; queryResult.Add(report); }
内容的提问来源于stack exchange,提问作者Ivan Zöggeler
相关产品推荐
相关产品推荐

