0

私のアプリケーションでは、Backendlessを使用して、MultiSelectionSpinner内のサーバー上のすべての登録ユーザーのリストを表示して、メール(およびID)を選択しようとします。そのため私は、のonCreateに次のコードを使用します。BackendlessデータでMultiSelectionSpinnerを塗る

List<String> contact_list = loadContactData(); 
String[] contact_stringArray = contact_list.toArray(new String[contact_list.size()]); 
    spinner = (MultiSelectionSpinner) findViewById(R.id.mySpinner1); 
    spinner.setItems(contact_stringArray); 

主な問題はここにあるかもしれない:

public List<String> loadContactData() { 
    final List<String> contact_name = new ArrayList<>(); 
    final List<String> contact_id = new ArrayList<>(); 
    Backendless.Data.of(BackendlessUser.class).find(new AsyncCallback<BackendlessCollection<BackendlessUser>>() { 
     public void handleResponse(BackendlessCollection<BackendlessUser> users) { 
      // Spinner Drop down elements 
      Iterator<BackendlessUser> userIterator = users.getCurrentPage().iterator(); 
      while (userIterator.hasNext()) { 
       BackendlessUser user = userIterator.next(); 
       String user_mail = user.getEmail(); 
       String user_id = user.getUserId(); 
       contact_name.add(user_mail); 
       contact_id.add(user_id); } 
      // Creating adapter for spinner 
      ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(MainActivity.this, 
        android.R.layout.simple_spinner_item, contact_name); 
      // Drop down layout style - list view with radio button 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      Log.d("SPINNER", String.valueOf(contact_name)); } 
     public void handleFault(BackendlessFault backendlessFault) { 
      System.out.println("Server reported an error - " + backendlessFault.getMessage());}}); 
    Log.d("SPINNER end", String.valueOf(contact_name)); 
    return contact_name; 
} 

は、私は、サーバーからデータを取得しますが、ポップアップ・スピナーは常に空です。 Logcatの "SPINNER end"は "SPINNER"の前に来ます。ログ「スピナー」では、登録ユーザーからのメールを取得しますが、ログ「スピナー終了」は空です。たぶん時間の問題ですが、わかりません... 私のMultiSelectionSpinnerクラスはOKです。 私を助けてくれることを願っています!

答えて

0

ArrayAdapterを正しく作成したようです。 Spinnerに設定するだけです。 spinnerがあなたのSpinnerインスタンスである

spinner.setAdapter(dataAdapter);

。そのログの呼び出しは非同期コールバックhandleResponse()に先立って実行されるためSPINNER endをログイン時に

さらに、SPINNER endログまず、contact_nameとは空です。

+0

しかし、このシーケンスを変更するにはどうすればよいですか? handleResponse()は、ログ呼び出しとreturn文の前に実行する必要があります...問題をお寄せいただきありがとうございます! – Timitrov

関連する問題