如何为此添加 ProgressDialog

How do I add a ProgressDialog to this

我正在从 Parse.com 填充一个 RecyclerView 并且因为它在同一个线程上,我希望添加一个 ProgressDialog 直到数据完全加载。但是,困惑,我该怎么做。

目前的代码如下:

    public class BigBoard extends ActionBarActivity {

    private List<Person> persons;
    private RecyclerView rv;
    RVAdapter adapter;
    String a,b;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Parse.initialize(this, "app-id", "client-key");
        setContentView(R.layout.activity_big_board);
        initializeData(); // <----- This is where initialization begins
        adapter = new RVAdapter(persons);


        rv=(RecyclerView)findViewById(R.id.rv);

        LinearLayoutManager llm = new LinearLayoutManager(this);
        rv.setLayoutManager(llm);
        rv.setHasFixedSize(true);


        initializeAdapter();

    }

    private void initializeData(){
        persons = new ArrayList<>();


        ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Credentials");
        query.findInBackground(new FindCallback<ParseObject>() {
            public void done(List<ParseObject> credentialList, ParseException e) {
                if (e == null) {
                    for(int i=0;i<credentialList.size();i++)
                    {
                        a=credentialList.get(i).getString("Name");
                        b=credentialList.get(i).getString("SurName");
                        persons.add(new Person(a,b));



                        Log.d("OUT", "So the Val::------> " +a +b);
                        adapter.notifyDataSetChanged();

                    }
                } else {
                    Log.d("score", "Error: " + e.getMessage());
                }
            }
        });
        //persons.add(new Person("Emma Wilson", "23 years old"));
        //persons.add(new Person("Lavery Maiss", "25 years old"));
        //persons.add(new Person("Lillie Watts", "35 years old"));

    }

    private void initializeAdapter(){

        rv.setAdapter(adapter);
    }




}

所以我正在从方法 initializeData() 将数据加载到列表中,是否可以 运行 a ProgressDialog 直到完成?还是我应该去 AsyncTask() 来实现它?任何帮助将不胜感激,谢谢!

您现在所做的是不正确的,因为您实际上是在 UI 线程上解析 n/w 数据。即使显示 ProgressDialog,用户体验也会很差,因为 ProgressDialog 动画不会很流畅,因为 UI 线程在 initializeData() 中一直很忙方法

您应该只在 AsyncTask 中使用您的 initializeData() 方法。同时,显示 onCreate() 方法中的 ProgressDialog。当您的 initializeData() 方法完成时,关闭 ProgressDialog