2014-01-18 69 views
0

我正在使用Volley和GSON来解析远程JSON。这里是我的片段做的:无法将JSON填充到ListView

public class LatestFragment extends ListFragment implements OnScrollListener { 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     arrItemList = new ArrayList<ItemListModel>(); 
     va = new LatestAdapter(getActivity(), arrItemList); 

     lv = getListView(); 
     setListAdapter(va); 
     lv.setOnScrollListener(this); 

     loadItemList(1); 
    } 

    private void loadItemList(int page) { 
     mRequestQueue = Volley.newRequestQueue(getActivity()); 

     GsonRequest<LatestContainer> myReq = new GsonRequest<LatestContainer>(
       Method.GET, url, LatestContainer.class, 
       createMyReqSuccessListener(), createMyReqErrorListener()); 

     mRequestQueue.add(myReq); 
    } 


    private Response.Listener<LatestContainer> createMyReqSuccessListener() { 
     return new Response.Listener<LatestContainer>() { 
      @Override 
      public void onResponse(LatestContainer response) { 
       try { 

        for (int i = 0; i < response.getResults().size(); i++) { 

         ItemListModel ilm = new ItemListModel(); 
         ilm.setCategory(response.getResults().get(i).getCategory()); 
         ilm.setItem_id(response.getResults().get(i).getItem_id()); 
         ilm.setName(response.getResults().get(i).getName()); 
         ilm.setPrice(response.getResults().get(i).getPrice()); 
         ilm.setUser_id(response.getResults().get(i).getUser_id()); 

         arrItemList.add(ilm); 


} 

LatestAdapter

public class LatestAdapter extends BaseAdapter { 
    public LatestAdapter(Context context, ArrayList<ItemListModel> items) { 
     this.arrItemList = items; 
     this.context = context; 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 

     ViewHolder vh; 
     lf = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (view == null) { 
      vh = new ViewHolder(); 
      view = lf.inflate(R.layout.row_latest_listview, null); 
      vh.tvName = (TextView) view.findViewById(R.id.txtItemName); 
      vh.tvCategory = (TextView) view.findViewById(R.id.txtCategory); 
      vh.tvPrice = (TextView) view.findViewById(R.id.txtPrice); 
      vh.tvThumbnail = (ImageView) view.findViewById(R.id.imgPhoto); 
      view.setTag(vh); 
     } else { 
      vh = (ViewHolder) view.getTag(); 
     } 

     ItemListModel nm = arrItemList.get(i); 
     vh.tvCategory.setText(nm.getCategory()); 
     vh.tvPrice.setText("RM " + nm.getPrice()); 
     vh.tvName.setText(nm.getName()); 

     return view; 
    } 

然而,当我运行代码,列表视图似乎并没有被填充。但解析是成功的。我可以在logcat中看到解析的字符串。所以反序列化在这里不是问题。我现在做错了什么?

+0

在你的适配器中必须(我可能是错的)被重写的其他函数,比如getCount(),给我们代码。 – hypd09

+0

还确保您的列表在将数据传递到适配器的构造函数之前已填充数据 – Raghunandan

+0

发布您的json和GSON映射类。 –

回答

2

确保在修改适配器的数据集后调用va.notifyDataSetChanged()