【发布时间】:2018-01-19 15:43:32
【问题描述】:
我想询问 Android,我有 JSON,我想将它加载到 Grid View 或 List View 中。我已经将我的 JSON (base64) 转换为位图并使用 AsyncTask 加载它,但它真的很慢,因为我先加载所有 JSON 然后显示它。实际上我不想先加载它然后显示所有 JSON。我想一一加载。所以我不会等太久。 我能用什么?
这里是我的示例代码;
private class GetImageProduct extends AsyncTask<String,Void,Object>{
@Override
protected Objects doInBackground(String... params) {
String productCode = params[0];
String skuCode = params[1];
String productImageUrl = ""+urlProduct+"?filter={\"where\":{\"Code\":\""+ productCode +"\"}}";
HttpHandler sh = new HttpHandler();
String jsonString = sh.makeServiceCall(productImageUrl);
Log.e(TAG, "Response from url: " + jsonString);
if(jsonString != null){
try{
JSONArray productDetails = new JSONArray(jsonString);
for(int j=0 ;j<productDetails.length();j++){
JSONObject q = productDetails.getJSONObject(j);
String productImage = q.getString("Image");
String productName = q.getString("Name");
String encodeImage = productImage.replace("data:image/jpeg;base64,","").replace("data:image/png;base64,","");
byte[] decodedString = Base64.decode(encodeImage,Base64.DEFAULT);
Bitmap base64Bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
Bitmap resized = Bitmap.createScaledBitmap(base64Bitmap, 1000,1000,true);
HashMap<String, Object> productData = new HashMap<String,Object>();
productData.put("base64Bitmap",resized );
productData.put("productName",productName);
imageList.add(productData);
}
}catch(final JSONException e){
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
LENGTH_LONG)
.show();
}
});
}
}
return null;
}
@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
if (pDialog.isShowing()) {
pDialog.dismiss();
}
ExtendedSimpleAdapterMapping adapter2 = new ExtendedSimpleAdapterMapping(
MappingProductActivity.this, imageList,
R.layout.list_selected_product,
new String[]{"base64Bitmap","productName"},
new int[]{R.id.imageSelId, R.id.txtProductName}
);
lv.setAdapter(adapter2);
}
}
【问题讨论】:
标签: android json bitmap android-asynctask