I use my library Projects enter link description here
The author gives an example:
public static class Tweet {
public String id;
public String text;
public String photo;
}
public void getTweets() throws Exception {
Ion.with(context)
.load("http://example.com/api/tweets")
.as(new TypeToken<List<Tweet>>(){})
.setCallback(new FutureCallback<List<Tweet>>() {
@Override
public void onCompleted(Exception e, List<Tweet> tweets) {
// chirp chirp
}
});
}
I do follow his example. But is not clear in what form the data come in Example. I make the example:
public static class Test {
public String name;
public String soname;
public String age;
public String country;
}
private void setData(){
Ion.with(getActivity())
.load("http://........")
.as(new TypeToken<List<Test>>(){})
.setCallback(new FutureCallback<List<Test>>() {
@Override
public void onCompleted(Exception e, List<Test> result) {
// do stuff with the result or error
Toast.makeText(getActivity(), result.get(0).name, Toast.LENGTH_LONG).show();
}
});
}
but get an error:
12-22 05:46:59.609 414-414/com.testlist.pavel.transportercity E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at com.testlist.pavel.transportercity.Fragments.Kitchen_list_of_orders$1.onCompleted(Kitchen_list_of_orders.java:49)
at com.testlist.pavel.transportercity.Fragments.Kitchen_list_of_orders$1.onCompleted(Kitchen_list_of_orders.java:45)
at com.koushikdutta.async.future.SimpleFuture.handleCallbackUnlocked(SimpleFuture.java:79)
at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java:105)
at com.koushikdutta.ion.IonRequestBuilder$1.run(IonRequestBuilder.java:215)
at com.koushikdutta.async.AsyncServer$RunnableWrapper.run(AsyncServer.java:171)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
help to understand what is the problem? my answer from the server:
{"name":"Vasya","soname":"Pupkin","age":"25","country":"Russian Federation"}{"name":"Iliya","soname":"Strelnikov","age":"43","country":"Kazahstan"}
Maybe not the correct data format and the library can not they understand?
The
Ionlibrary expects to receive anJsonArrayfrom the url. Make sure you getJsonArray. Secondlyresult.get(0).namewould returnnull pointersometimes, the reason being one should first check if there is any error happened during the request. This can be found via the parametereinonCompletedmethod. Then you need to check if theListhas elements before sending it to a toast, coz if0th elementisnot foundthen you are gonna get a null pointer error.Do something similar to below in
onCompletedmethod.