在此代碼中,我正在解析JSON並使用ArrayList
將其顯示在可搜索的微調器中。該代碼完美工作,但是當涉及到解析大型JSON時,它需要時間和移動數據上的內存。如何爲此代碼編寫Gson?
任何人都可以告訴我一個更好的想法來解析大JSON或任何人可以解釋我如何解析它與Gson和加載到可搜索的微調?
try {
if (response.has("products_data")) {
jsonArray = new JSONArray();
jsonArray = response.getJSONArray("products_data");
for (int t = 0; t < jsonArray.length(); t++) {
object = jsonArray.getJSONObject(t);
retailer_id = object.getString("retailer_id");
retailer_name = object.getString("retailer_name");
product_code = object.getString("product_code");
product_name = object.getString("product_name");
pro_packing = object.getString("pro_packing");
pro_company=object.getString("pro_company");
pro_generic_code=object.getString("pro_generic_code");
pro_generic_name=object.getString("pro_generic_name");
pro_stock = object.getInt("product_stock");
product_MRP=object.getDouble("product_MRP");
p = new Product();
p.setRetailer_id(retailer_id);
p.setRetailer_name(retailer_name);
p.setProduct_code(product_code);
p.setProduct_name(product_name);
p.setPro_packing(pro_packing);
p.setPro_company(pro_company);
p.setPro_generic_code(pro_generic_code);
p.setPro_generic_name(pro_generic_name);
p.setPro_stock(pro_stock);
p.setProduct_MRP(product_MRP);
productlist.add(p);
}
progressDialog.dismiss();
final List<String> pname = new ArrayList<String>();
final List<String> pcode = new ArrayList<String>();
pname.clear();
pname.add(0,"Select Products");
for (int i = 0; i < productlist.size(); i++) {
pname.add(productlist.get(i).getProduct_name());
}
// Creating adapter for spinner
final ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.custom_spinnertxt, pname);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
runOnUiThread(new Runnable() {
@Override
public void run() {
// attaching data adapter to spinner
autoCompleteTextView.setAdapter(spinnerAdapter);
autoCompleteTextView.setSelection(0);
}
});
autoCompleteTextView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int i, long id) {
if(i>0) {
p_id = productlist.get(i - 1).getProduct_code();
p_stock = productlist.get(i - 1).getPro_stock();
ppack = productlist.get(i - 1).getPro_packing();
pcomp = productlist.get(i - 1).getPro_company();
mrp = productlist.get(i - 1).getProduct_MRP();
pseller = productlist.get(i - 1).getRetailer_name();
// Log.i("pID:", p_id);
//Log.i("pStock:", String.valueOf(p_stock));
//Log.i("PMRP:", String.valueOf(mrp));
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
這是我的JSON響應:
"products_data": [
{
"retailer_id": "mum0022",
"retailer_name": "SAKTI MEDICO",
"product_code": "6474",
"product_name": "EPISOFT CLEANSING LOTION",
"pro_packing": "125ML",
"pro_company": "GLENMARK-GRACEWELLSPECIALITY",
"pro_generic_code": "",
"pro_generic_name": "",
"product_stock": "7",
"product_MRP": "209"
},
{
"retailer_id": "mum0022",
"retailer_name": "SAKTI MEDICO",
"product_code": "8403",
"product_name": "ELOVERA LOTION 150ML (BIG)",
"pro_packing": "150ML",
"pro_company": "GLENMARK (DERMAX)",
"pro_generic_code": "",
"pro_generic_name": "",
"product_stock": "3",
"product_MRP": "324.5"
},
...
發表您的JSON響應以及 –
參考: HTTPS ://inducesmile.com/android/android-json-parsing-using-gson-and-recyclerview/ –
我很想說:這個網站不是免費的寫作服務。但無論如何:您希望我們花時間幫助您解決問題。所以你可以至少很有禮貌地正確格式化/縮進你的所有代碼。沒有必要將代碼推到最右邊,以至於需要使用水平滾動條來查看它! – GhostCat