预期的BEGIN_ARRAY,但是在BEGIN_OBJECT列10路径$ .item
问题描述:
我想显示数据从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);
}
}
答
根据你的模型班,我假设你想要一个类别和一个项目列表。所以,你应该修改你的回应是这样的方式像
{ "item": { "category": "electronics", "items": [ { "title": "Ilara Milk", "price": "Ksh 50", "url": "http://supa.swagshop.co.ke/Images/coke.jpg" } ] } }
如果你可以发布你的PHP代码一点点,那
答
在ExpandableListView显示它是一个对象items:{..}
但你正试图将其转换为list
JSON的应该是像items: [item1, item2, ...]
+0
你可以使用我的项目,我们可以帮助你过来,以上解释这@arjun –
仍然有一个错误先生,预计BEGIN_ARRAY,但是BEGIN_OBJECT行1列11路径$ .item,但现在它在colimn 11而不是10 –
你可以发布你的JSON响应? –