Android fragments 如何将数据加载到android列表片段异步中?
我有一个片段,只有一个列表视图。我正在从我的数据库加载收藏夹,如下所示。如何异步加载它们?目前,我被迫在加载视图时同步异步方法。我希望这样可以加载视图,然后在结果准备好后填充它们,以便更快。这不仅仅是微观优化,我想学习如何正确地做到这一点Android fragments 如何将数据加载到android列表片段异步中?,android-fragments,asynchronous,xamarin.android,android-listview,fragment-oncreateview,Android Fragments,Asynchronous,Xamarin.android,Android Listview,Fragment Oncreateview,我有一个片段,只有一个列表视图。我正在从我的数据库加载收藏夹,如下所示。如何异步加载它们?目前,我被迫在加载视图时同步异步方法。我希望这样可以加载视图,然后在结果准备好后填充它们,以便更快。这不仅仅是微观优化,我想学习如何正确地做到这一点 public class FavoriteFragment : Fragment { public event EventHandler<Favorite> FavoriteSelected; private Favori
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;
}
公共类FavoriteFragment:Fragment
{
已选择公共事件事件处理程序Favorite;
专用FavoriteAdapter lstuAdapter;
私人列表(收藏夹),;
私人储存库(repo);;
创建时公共覆盖无效(Bundle savedInstanceState){
base.OnCreate(savedInstanceState);
_repo=TinyIoCContainer.Current.Resolve();
}
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态){
var view=充气机.充气(Resource.Layout.fragment\u favorite,container,false);
var lstFavorites=view.findviewbyd(Resource.Id.lstFavorites);
_favorites=Task.Run(异步()=>await\u repo.GetFavoritesAsync()).Result;
_lstAdapter=新的FavoriteAdapter(活动,_favorites);
lstavorites.Adapter=lstuadapter;
lstFavorites.ItemClick+=(s,e)=>FavoriteSelected?.Invoke(这个,_favorites[e.Position]);
返回视图;
}
通过此线程,您可以使用OnActivityCreated()加载数据
public override async void OnActivityCreated(Bundle savedInstanceState)
{
base.OnActivityCreated(savedInstanceState);
await LoadData();
}
private async Task LoadData()
{
//get data
}