2016-03-02 3 views
2

Мне нужно попробовать скачать данные в ArrayList. Когда я вызываю его внутри метода done(), это нормально, но когда я вызываю его за пределами done(), он будет null. Как я могу это исправить?Извлечение данных из Parse.com в ArrayList <Object>

 ParseQuery<ParseObject> query = ParseQuery.getQuery("code"); 
    query.findInBackground(new FindCallback<ParseObject>() { 
     public void done(List<ParseObject> provineList, ParseException e) { 
      if (e == null) { 
       for (ParseObject mProvine : provineList) { 
        Provine provine = new Provine(); 
        provine.setPro((String) mProvine.get("provine")); 
        provine.setNumber((String) mProvine.get("code_number")); 
        provines.add(provine); 
        Log.d("All provine", provines.get(i).getPro()); (it's ok, no problem). 
        i++; 
       } 
      } else 
       Log.d("Provines", "Error: " + e.getMessage()); 
      } 
     } 
    }); 
Log.d("All provine", provines.get(0).getPro()); (it's null). 

ответ

1

Вы можете объявить подкласс, который распространяется на ParseObject.

Звоните ParseObject.registerSubclass(YourClass.class) в свой конструктор приложения перед вызовом Parse.initialize().

Следуйте этим Subclasseshttps://www.parse.com/docs/android/guide#objects-subclassing-parseobject

 // Armor.java 
    import com.parse.ParseObject; 
    import com.parse.ParseClassName; 

    @ParseClassName("Armor") 
    public class Armor extends ParseObject { 
    } 

    // App.java 
    import com.parse.Parse; 
    import android.app.Application; 

    public class App extends Application { 
     @Override 
     public void onCreate() { 
     super.onCreate(); 

     ParseObject.registerSubclass(Armor.class); 
     Parse.initialize(this, PARSE_APPLICATION_ID, PARSE_CLIENT_KEY); 
     } 
    } 

по запросу вы получите, что данные, как ArrayList.

ParseQuery<Armor> query = ParseQuery.getQuery(Armor.class); 
query.whereLessThanOrEqualTo("rupees", ParseUser.getCurrentUser().get("rupees")); 
query.findInBackground(new FindCallback<Armor>() { 
    @Override 
    public void done(List<Armor> results, ParseException e) { 

    // here you can use results same as object model. 


    } 
}); 
Смежные вопросы