我已经扩展了RoboAsyncTask实现了所有需要的方法,但是当数据加载时,它显示默认加载动画。
我已经做了我的自定义加载对话框,但默认加载动画片段仍然显示。有可能切除吗?或者更改动画图像?
public class ContactFragment extends RoboSherlockListFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ContactLoadingTask contactLoadingTask = new ContactLoadingTask(this.getActivity());
contactLoadingTask.execute();
}
private class ContactLoadingTask extends RoboAsyncTask<List<Contact>> {
@Inject
ContactParser contactParser;
protected ContactLoadingTask(Context context) {
super(context);
}
@Override
public List<Contact> call() throws Exception {
return contactParser.getContacts();
}
@Override
protected void onSuccess(List<Contact> contacts) throws Exception {
setListAdapter(new ContactArrayAdapter(ContactFragment.this.getActivity(), contacts));
}
}
}
启动这段代码,我看到加载动画在我的片段加载之前
RoboAsyncTask
does not处理任何动画,或任何用户可见的东西。它只在后台线程中执行代码。
我认为你所说的动画是由ListFragment
在调用setListAdapter()
时自动播放的,正如setListShown()
方法文档
遗憾的是,它似乎不能覆盖这个动画,所以你可能不得不使用一个标准的片段和管理ListView自己。您可以查看ListFragment的源代码来了解这是如何完成的
如果你只是想禁用动画,你可以尝试在设置列表适配器之前使用setListShownNoAnimation
:
@Override
protected void onSuccess(List<Contact> contacts) throws Exception {
setListShownNoAnimation(true);
setListAdapter(new ContactArrayAdapter(ContactFragment.this.getActivity(), contacts));
}