【发布时间】:2014-01-18 15:46:48
【问题描述】:
我正在使用 Volley 和 GSON 来解析远程 JSON。这是我的片段:
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 中看到解析后的字符串。所以反序列化在这里不是问题。我现在做错了什么?
【问题讨论】:
-
在您的适配器中,必须(我可能是错的)您已覆盖的其他函数,例如 getCount(),给我们代码。
-
还要确保您的列表在传递给适配器的构造函数之前填充了数据
-
发布您的 json 和 GSON 地图类。
标签: android json android-listview gson