2014-01-18 5 views
0

저는 발리와 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()으로 전화하십시오.

관련 문제