Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将ProgressDialog添加到此对话框_Java_Android_Progressdialog - Fatal编程技术网

Java 如何将ProgressDialog添加到此对话框

Java 如何将ProgressDialog添加到此对话框,java,android,progressdialog,Java,Android,Progressdialog,我正在Parse.com中填充一个RecyclerView,由于它位于同一个线程上,我希望添加一个ProgressDialog,直到数据完全加载。但是,困惑的是,我该怎么做呢 以下是迄今为止的代码: public class BigBoard extends ActionBarActivity { private List<Person> persons; private RecyclerView rv; RVAdapter adapter;

我正在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方法将数据加载到列表中,是否可以运行ProgressDialog直到完成?或者我应该使用异步任务来实现它?任何帮助都将不胜感激,谢谢

您现在所做的是不正确的,因为您实际上是在UI线程上解析n/w数据。即使您显示ProgressDialog,这也是一种糟糕的用户体验,因为ProgressDialog动画不会平滑,因为您的UI线程在initializeData方法中总是很忙


您应该仅在AsyncTask中使用initializeData方法。同时,从onCreate方法显示ProgressDialog。当initializeData方法完成时,基本上关闭ProgressDialog。对于进度对话框,您可以在需要时启动它,也可以在作业完成时关闭它。