android-fragments - 如何将数据加载到android列表片段异步中?
问题描述
我有一个片段,只有一个列表视图。我正在从我的数据库中加载收藏夹,如下所示。如何异步加载它们?目前我被迫在加载视图时使异步方法同步。我希望它可以加载视图,然后在结果准备好时填充它们以使其更快。它不仅仅是微优化,我想学习如何正确地做到这一点。
public class FavoriteFragment : Fragment
{
public event EventHandler<Favorite> FavoriteSelected;
private FavoriteAdapter _lstAdapter;
private List<Favorite> _favorites;
private Repository _repo;
public override void OnCreate(Bundle savedInstanceState) {
base.OnCreate(savedInstanceState);
_repo = TinyIoCContainer.Current.Resolve<Repository>();
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
var view = inflater.Inflate(Resource.Layout.fragment_favorite, container, false);
var lstFavorites = view.FindViewById<ListView>(Resource.Id.lstFavorites);
_favorites = Task.Run(async () => await _repo.GetFavoritesAsync()).Result;
_lstAdapter = new FavoriteAdapter(Activity, _favorites);
lstFavorites.Adapter = _lstAdapter;
lstFavorites.ItemClick += (s, e) => FavoriteSelected?.Invoke(this, _favorites[e.Position]);
return view;
}
解决方案
从这个线程onActivityCreated(),您可以使用 OnActivityCreated() 加载数据。
public override async void OnActivityCreated(Bundle savedInstanceState)
{
base.OnActivityCreated(savedInstanceState);
await LoadData();
}
private async Task LoadData()
{
//get data
}
推荐阅读
- python - 使用python在硒中查找具有和相应值的元素
- javascript - 在已安装的 webapp 上禁用模式弹出窗口
- excel - ppt.CommandBars.ExecuteMso "PasteSourceFormatting" 方法在调试时工作正常,但是在宏运行时它会错过目标
- c - 是否有用于将 char* 插入/附加到另一个 char* 中的定义位置的 C 函数?
- javascript - 在打字稿文件Vue.js中使用javascript组件时出错
- django - TypeError:无法在 Django REST 框架中解压不可迭代的 int 对象
- javascript - Reactjs:使用javascript删除输入标签值
- python-3.x - Python:Plotly 帧中的数据限制?
- python - 十进制上的python算术运算
- swift - UIView.animate() 问题