我的應用程序中有另一個問題。我用下面的代碼在MainActivity從我ContactAdapter獲取用戶數據:AsyncCallback優先
private List<String> loadContactData() {
ContactAdapter db = new ContactAdapter(getApplicationContext());
// Spinner Drop down elements
List<String> contacts = db.getAllContacts();
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, contacts);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Log.d("SPINNER", String.valueOf(contacts));
return contacts;
}
而且ContactAdapter:
public List<String> getAllContacts(){
final List<String> contacts_id = new ArrayList<String>();
final List<String> contacts_name = new ArrayList<String>();
Backendless.Data.of(BackendlessUser.class).find(new AsyncCallback<BackendlessCollection<BackendlessUser>>() {
public void handleResponse(BackendlessCollection<BackendlessUser> users) {
Iterator<BackendlessUser> userIterator = users.getCurrentPage().iterator();
while (userIterator.hasNext()) {
BackendlessUser user = userIterator.next();
String user_mail = user.getEmail();
String user_id = user.getUserId();
contacts_name.add(user_mail);
contacts_id.add(user_id);
}
Log.d("getAllContacts: ", String.valueOf(contacts_name)); }
public void handleFault(BackendlessFault backendlessFault) {
System.out.println("Server reported an error - " + backendlessFault.getMessage());}});
return contacts_name;
}
當然,我的問題是,Backendless查詢是慢......所以在我的Logcat中,我首先看到一個空的「SPINNER」,第二個「getAllContacts」與來自服務器的用戶數據。由於loadContactData()的return contacts語句也是空的。
我該如何實現getAllContacts()完成第一個獲取loadContactData()中的用戶數據?
我嘗試用註冊用戶在服務器上填充MultiSelectionSpinner。因此,我在MainActivity的onCreate中使用以下代碼:列表 contact_list = loadContactData(); String [] contact_stringArray = contact_list。toArray(new String [contact_list.size()]); spinner =(MultiSelectionSpinner)findViewById(R.id.mySpinner1); spinner.setItems(contact_stringArray); –
Timitrov
我添加了一些示例代碼,這應該是最小的努力解決方案。你應該顯示一個進度對話框,讓用戶在等待數據的時候發生一些事情。如果出現問題,你也應該顯示錯誤對話框 – crysxd