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
Ion
library expects to receive anJsonArray
from the url. Make sure you getJsonArray
. Secondlyresult.get(0).name
would returnnull pointer
sometimes, the reason being one should first check if there is any error happened during the request. This can be found via the parametere
inonCompleted
method. Then you need to check if theList
has elements before sending it to a toast, coz if0th element
isnot found
then you are gonna get a null pointer error.Do something similar to below in
onCompleted
method.