Xamarin Android如何在AlertDialog中实现带自定义适配器的ListView
你触发空引用的核心原因是布局引用搞混了:
你代码里给AlertDialog加载的是Resource.Layout.Filmes,这个布局是你写的ListView单项布局,里面只有三个TextView控件,根本不存在id为filmeslistView的ListView控件,所以ViewAD.FindViewById<ListView>(Resource.Id.filmeslistView)返回null,给null对象的Adapter属性赋值自然触发空引用。
修复步骤:
- 修正AlertDialog加载的布局
把MainActivity里的这行代码:
var ViewAD = LayoutInflater.Inflate(Resource.Layout.Filmes, null);
改为加载你带ListView的主布局即可:
var ViewAD = LayoutInflater.Inflate(Resource.Layout.Main, null);
- (可选优化)修改布局命名避免后续混淆
你现在两个布局的命名很容易搞混,建议重命名:
- 带ListView的布局(原主布局)改名为
FilmesListDialog.axml - ListView单项布局改名为
FilmeListItem.axml
修改后后续开发时就不会再出现加载错布局的问题。
- (可选修复隐患)补全模拟数据的Id字段
你FilmesRepositorio里最后一条《Marte》的Filme对象没有赋值Id,虽然不影响当前功能,但后续如果用到Id相关逻辑会出问题,建议补全Id值。
修复后运行就能正常在AlertDialog里展示带自定义适配器的ListView了。
内容的提问来源于stack exchange,提问作者nmend
相关产品推荐
相关产品推荐

