2017-02-27 115 views
1

我想顯示數據從SqlServer使用改進我的自定義可擴展列表視圖。我的Json應該如何實現以下類參數?

這是我目前的Json;

{"item":{"category":"electronics","items":{"title":"Ilara Milk","price":"Ksh 50","url":"http:\/\/supa.swagshop.co.ke\/Images\/coke.jpg"}}} 

以下是我ShopItem類,需要字符串和類單項在列表

public class ShopItem { 
    private String category; 
    public List<SingleItem> items = new ArrayList<SingleItem>(); 

    public ShopItem(String category, List<SingleItem> items) { 
     this.category = category; 
     this.items = items; 
    } 

    public String getCategory() { 
     return category; 
    } 

    public void setCategory(String category) { 
     this.category = category; 
    } 

    public List<SingleItem> getItems() { 
     return items; 
    } 

    public void setItems(List<SingleItem> items) { 
     this.items = items; 
    } 
} 

這裏是我的單項類。

public class SingleItem { 
    private String title; 
    private String price; 
    private String url; 
    private Bitmap itemimage; 

    public SingleItem(String title, String price, String url, Bitmap itemimage) { 
     this.title = title; 
     this.price = price; 
     this.url = url; 
     this.itemimage = itemimage; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getPrice() { 
     return price; 
    } 

    public void setPrice(String price) { 
     this.price = price; 
    } 

    public String getUrl() { 
     return url; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 

    public Bitmap getItemimage() { 
     return itemimage; 
    } 

    public void setItemimage(Bitmap itemimage) { 
     this.itemimage = itemimage; 
    } 
} 

以下是我的主要碎片,在那裏我檢索數據並當誤差在你的JSON描述items使用ExpandableListAdapter

public class MainFragment extends Fragment { 
    private BannerSlider bannerSlider; 

    private ExpandableListView CategoriesListView; 
    private ArrayList<ShopItem> items = new ArrayList<ShopItem>(); 

    private ExpandableListAdapter categoryAdapter; 


    public MainFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_main, container, false); 

     bannerSlider = (BannerSlider) view.findViewById(R.id.banner_slider1); 

     bannerSlider.addBanner(new RemoteBanner("http://supa.swagshop.co.ke/Images/moto.png")); 
     bannerSlider.addBanner(new RemoteBanner("http://supa.swagshop.co.ke/Images/moto.png")); 
     bannerSlider.addBanner(new RemoteBanner("http://supa.swagshop.co.ke/Images/moto.png")); 
     bannerSlider.addBanner(new RemoteBanner("http://supa.swagshop.co.ke/Images/moto.png")); 

     CategoriesListView = (ExpandableListView) view.findViewById(R.id.list_items); 

     getdata(); 

     CategoriesListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { 
      int previousGroup = -1; 

      @Override 
      public void onGroupExpand(int groupPosition) { 
       if ((previousGroup != -1) && (groupPosition != previousGroup)) { 
        CategoriesListView.collapseGroup(previousGroup); 
       } 
       previousGroup = groupPosition; 
      } 
     }); 
     return view; 
    } 

    private void getdata() { 
     final ProgressDialog progressDialog = new ProgressDialog(getContext()); 
     progressDialog.setMessage("Loading Items..."); 
     progressDialog.show(); 

     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(Constants.BASE_URL) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 

     InterfaceRequest request = retrofit.create(InterfaceRequest.class); 
     Call<JSONResponse> call = request.getJSON(); 
     call.enqueue(new Callback<JSONResponse>() { 

      @Override 
      public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) { 

       if (response.isSuccessful()){ 
        JSONResponse jsonResponse = response.body(); 
        items = new ArrayList<>(Arrays.asList(jsonResponse.getItem())); 
        categoryAdapter = new ShopItemAdapter(getContext(),items); 
        CategoriesListView.setAdapter(categoryAdapter); 
       } else { 
        Toasty.warning(getContext(),"Oops! Items did not load correctly", Toast.LENGTH_LONG,true).show(); 
       } 
       progressDialog.dismiss(); 

      } 

      @Override 
      public void onFailure(Call<JSONResponse> call, Throwable t) { 
       Toasty.error(getContext(),t.getLocalizedMessage(), Toast.LENGTH_SHORT,true).show(); 
       Log.d(Constants.TAG,t.getMessage()); 
       progressDialog.dismiss(); 
      } 
     }); 
    } 

    public void showData() { 
     categoryAdapter = new ShopItemAdapter(getContext(),items); 
     CategoriesListView.setAdapter(categoryAdapter); 
    } 
} 

回答

0

根據你的模型班,我假設你想要一個類別和一個項目列表。所以,你應該修改你的迴應是這樣的方式像

 
{ 
    "item": { 
     "category": "electronics", 
     "items": [ 
      { 
       "title": "Ilara Milk", 
       "price": "Ksh 50", 
       "url": "http://supa.swagshop.co.ke/Images/coke.jpg" 
      } 
     ] 
    } 
} 

如果你可以發佈你的PHP代碼一點點,那

+0

仍然有一個錯誤先生,預計BEGIN_ARRAY,但是BEGIN_OBJECT行1列11路徑$ .item,但現在它在colimn 11而不是10 –

+0

你可以發佈你的JSON響應? –

0

在ExpandableListView顯示它是一個對象items:{..}但你正試圖將其轉換爲list

JSON的應該是像items: [item1, item2, ...]

+0

你可以使用我的項目,我們可以幫助你過來,以上解釋這@arjun –

相關問題