如何为此添加 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
我正在从 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