我正在尝试使用来自github的 universalimageloader 获取网格视图中的图像。但是,我不想从常量加载静态最终图像,而是想从服务器动态加载图像路径。所以我做了一个 jsonparser 从服务器加载信息并解析它。但我正在努力将其分配给 IMAGES 字符串数组。请建议我如何分配。我是安卓新手。
ImageConstants.java
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.util.Log;
public class ImageConstant {
public static String[] IMAGE1;
private static String[] constants;
public static String url = "http://ensign119.com/assets/image11.php";
// JSON Node names
protected static final String TAG_PRODUCTS = "image_path";
protected static final String TAG_CID = "file_id";
public static final String TAG_NAME = "file_name";
// contacts JSONArray
JSONArray products = null;
public String[] ImageConstant() {
// TODO Auto-generated constructor stub
new Message().execute(url);
for(int i=0; i<IMAGE1.length;i++){
constants[i] = IMAGE1[i];
}
for(String name:constants){
Log.d("new path", name);
}
return constants;
}
class Message extends AsyncTask<String, Integer, ArrayList<HashMap<String, String>> > {
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
// ProgressDialog progress = new ProgressDialog(Path.this);
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();
@Override
protected ArrayList<HashMap<String, String>> doInBackground(String... params) {
Log.d("doInBackgound","backgound is running");
Log.d("json string ", jParser.getJSONFromUrl(url).toString());
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url);
Log.d("path_parsing", "before parsing");
try {
// Getting Array of Contacts
products = json.getJSONArray(TAG_PRODUCTS);
// looping through All Contacts
for(int i = products.length()-1; i >=0; i--){
JSONObject c = products.getJSONObject(i);
// Storing each json item in variable
String cid = c.getString(TAG_CID).toString();
String name = c.getString(TAG_NAME);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_CID, cid);
map.put(TAG_NAME, name);
// adding HashList to ArrayList
mylist.add(map);
Log.d("mylist_value", mylist.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("path_parsing", "after parsing");
return mylist;
}
@Override
protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
// if(progress.isShowing()){
// progress.dismiss();
// }
IMAGE1 = new String[result.size()];
for(int i=0; i<result.size(); i++){
IMAGE1[i] = result.get(i).get("file_name");
}
for(String path: IMAGE1){
Log.d("path", path.toString());
}
Log.d("postExecute","Postexecute is running");
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
}
}
}
常量.java
public final class Constants {
public static final String[] IMAGES = new String[] {
"http://wrong.site.com/corruptedLink", // Wrong link
};
private Constants() {
}
public static class Config {
public static final boolean DEVELOPER_MODE = false;
}
public static class Extra {
public static final String IMAGES = "com.nostra13.example.universalimageloader.IMAGES";
public static final String IMAGE_POSITION = "com.nostra13.example.universalimageloader.IMAGE_POSITION";
}
}