我想顯示數據從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);
}
}
仍然有一個錯誤先生,預計BEGIN_ARRAY,但是BEGIN_OBJECT行1列11路徑$ .item,但現在它在colimn 11而不是10 –
你可以發佈你的JSON響應? –