У меня есть ListFragment здесь, где требуется URL-адрес для разбора JSON с использованием библиотеки GSON. Залп для фоновой задачи:Android - GsonRequest возвращает null
public class LatestFragment extends ListFragment {
public LatestFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_latest, container,
false);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
arrItemList = new ArrayList<ItemListModel>();
va = new LatestAdapter(getActivity(), arrItemList);
loadItemList(1);
}
private void loadItemList(int page) {
mRequestQueue = Volley.newRequestQueue(getActivity());
pd = ProgressDialog.show(getActivity(), null, "Loading...");
// TODO use Volley param
currentPage = page;
param = "?page=" + currentPage;
String url = Constants.LATEST_ITEM_LIST + param;
GsonRequest<ItemListModel> myReq = new GsonRequest<ItemListModel>(
Method.GET, url, ItemListModel.class,
createMyReqSuccessListener(), createMyReqErrorListener());
mRequestQueue.add(myReq);
}
private Response.Listener<ItemListModel> createMyReqSuccessListener() {
return new Response.Listener<ItemListModel>() {
@Override
public void onResponse(ItemListModel response) {
try {
Log.d("response > ", response.toString());
pd.dismiss();
} catch (Exception e) {
e.printStackTrace();
}
};
};
}
private Response.ErrorListener createMyReqErrorListener() {
return new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
};
}
}
При запуске приложения, он показывает response
является нулевой.
Вот ItemListModel
:
public class ItemListModel {
private String user_id;
private String item_id;
private String name;
private String price;
private String category;
private ThumbnailModel thumbnail; // not array list
public ItemListModel(){}
//getters
@Override
public String toString() {
return "ItemListModel [user_id=" + user_id + ", item_id=" + item_id
+ ", name=" + name + ", price=" + price + ", category="
+ category + ", thumbnail=" + thumbnail + "]";
} // ALL NULL
}
Это десериализации этот формат JSON:
{
"results": [
{
"user_id": "1",
"item_id": "18630",
"name": "Unnamed Item",
"price": "0",
"description": "",
"created_at": "2014-01-16 15:31:36",
"thumbnail": {
"image50": "http://www.example.com/adsa.jpg",
"image100": "hhttp://www.example.com/adsa.jpg"
},...
Что я сделал не так на этот раз? Должен ли я просто придерживаться JSONArrayRequest от Volley? Гектометр
Эй, ваше решение работает. Но как мне получить значение String из класса «Результат» и «ThumbnailModel»? – AimanB
@AimanB если он работает, тогда не забудьте проголосовать и принять ответ. –
@AimanBI добавил код для получения класса Result и ThumbnailModel. Повторите мой ответ. –