0

我已经扩展 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));
    }

}

}

启动此代码,我在加载联系人之前看到我的片段上的加载动画

4

1 回答 1

0

RoboAsyncTask不处理任何动画或用户可见的任何内容它只在后台线程中执行代码。

我认为您正在谈论的动画是ListFragment在您调用时自动播放的setListAdapter(),如setListShown()方法文档中所述

遗憾的是,您似乎无法覆盖此动画,因此您可能必须使用标准 Fragment 并自己管理 ListView。您可以查看ListFragment 的源代码以了解这是如何完成的


如果您只想禁用动画,您可以尝试 setListShownNoAnimation在设置列表适配器之前使用:

@Override
protected void onSuccess(List<Contact> contacts) throws Exception {
    setListShownNoAnimation(true);
    setListAdapter(new ContactArrayAdapter(ContactFragment.this.getActivity(), contacts));
}
于 2013-06-12T11:43:04.510 回答