Ich habe ähnliche Fragen wie diese gesucht, aber leider fand ich sie wirklich verwirrend und auch ich bin noch neu auf Android und Retrofit.Android Retrofit 1.9 return ListString nach Erfolg
Ich habe eine Kontaktliste JSON hier
http://api.androidhive.info/contacts/
Und schon Arbeitsliste, aber dann wollte ich den Retrofit-Prozess in einer anderen Klasse behandeln, damit ich es einfach anrufen kann, wann immer ich will. Ich habe die MainActivity für die Benutzeroberfläche und den RetrofitHandler aufrufen, die die Erfolgs- und Fehlermethode behandelt.
Hier ist meine Hauptaktivität
public class MainActivity extends AppCompatActivity{
//note i just simplifiend my code a little
private List<Contacts> contacts;
public String[] itemer;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RetrofitHandler retrofitHandler = new RetrofitHandler();
itemer = retrofitHandler.getContacts(this);
if (itemer != null) {
Toast.makeText(MainActivity.this,itemer[0],Toast.LENGTH_SHORT).show();
}
}
Und hier ist mein HandlerClass
ublic class RetrofitHandler {
public String[] item;
public static final String ROOT_URL = "http://api.androidhive.info";
public List<Contacts> contacts;
public String[] getContacts(final Context context) {
final ProgressDialog loading = ProgressDialog.show(context, "Fetching Data", "Please wait...", false, false);
RestAdapter adapter = new RestAdapter.Builder().setEndpoint(ROOT_URL).build();
ContactsAPI api = adapter.create(ContactsAPI.class);
api.getContacts(new Callback<Contacts>() {
@Override
public void success(Contacts contacts, Response response) {
loading.dismiss();
MainActivity update = new MainActivity();
List<Contact> contactList = contacts.getContacts();
item = new String[contactList.size()];
for (int i = 0; i < contactList.size(); i++) {
item[i] = contactList.get(i).getName();
}
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(context, "Error Occured", Toast.LENGTH_LONG).show();
}
});
return item;
}
Mein Problem ist, es läuft ohne Fehler auf LogCat. Leider wird der Toast auf der Hauptaktivität nicht angezeigt.
ist ein Netzwerk-Anruf, könnte es Haupt-Thread und Hintergrund Thema Problem, Also warum kann man nicht vom Ende der Erfolg-Funktion Toast. Überprüfen Sie auch, ob die Antwort, die Sie erhalten, Null ist oder nicht –
@mohitsharma Nun der Toast auf Erfolg ist, was ich erreicht habe, aber ursprünglich möchte ich Mai Elemente auf einer Listview von der Hauptaktivität die Elemente auf Erfolg ist nicht null, ich habe es getestet mit dem Toast – user3262438
versuchen, zu überprüfen: Wenn Ihre Bedingung ausgeführt wird oder nicht, versuchen Sie eine Println innerhalb, wenn Block und ändern Sie die Bedingung in iterer.length/size –