Java 要转换ArrayList<;HashMap<;字符串,对象>&燃气轮机;串

Java 要转换ArrayList<;HashMap<;字符串,对象>&燃气轮机;串,java,android,string,arraylist,universal-image-loader,Java,Android,String,Arraylist,Universal Image Loader,我阅读并创建了具有gridview的应用程序,该gridview从json获取图像。但是我的应用程序加载太慢了,所以我想使用通用图像加载器,但它在ImageAdapeter类中使用的通用图像加载器中的函数是这样的 imageLoader.displayImage(imageUrls[position],imageView,选项)或用于公式 imageLoader.displayImage(字符串、imageView、选项) 所以我没有字符串来完成这个公式。我可以创建对象arr来存储Arrayli

我阅读并创建了具有gridview的应用程序,该gridview从json获取图像。但是我的应用程序加载太慢了,所以我想使用通用图像加载器,但它在ImageAdapeter类中使用的通用图像加载器中的函数是这样的

imageLoader.displayImage(imageUrls[position],imageView,选项)或用于公式
imageLoader.displayImage(字符串、imageView、选项)

所以我没有字符串来完成这个公式。我可以创建
对象arr
来存储Arraylist

如何将
ArrayList
转换为字符串或任何更改代码的方法

请确认或建议或推荐我,因为你可以。易读

下面是我的ImageAdapter。它工作得很好,但是很慢

public class ImageAdapter extends BaseAdapter {
    private Context context;
    private ArrayList<HashMap<String, Object>> MyArr = new ArrayList<HashMap<String, Object>>();

    public ImageAdapter(Context c, ArrayList<HashMap<String, Object>> myArrList) {
        context = c;
        MyArr = myArrList;
    }

    public int getCount() {
        return MyArr.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        viewHolder = new ViewHolder();

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (convertView == null) {
            convertView = inflater.inflate(R.layout.grid_item, null);
        }
        viewHolder.categoryCard = (ImageView) convertView.findViewById(R.id.category_card);
        //==================== change area
        Object arr = new ArrayList<HashMap<String, Object>>(); // make objec arr to store arraylist
        arr = MyArr.get(position).get("categoryid");
        if (arr.equals("1")) {
            viewHolder.categoryCard.setImageResource(R.drawable.card_eat);
            viewHolder.imageView = (ImageView) convertView.findViewById(R.id.imageView1);
        } else {
            viewHolder.categoryCard.setImageResource(R.drawable.card_etc);
            viewHolder.imageView = (ImageView) convertView.findViewById(R.id.imageView1);
        }
        // =============================
        try {
            viewHolder.imageView.setImageBitmap((Bitmap) MyArr.get(position).get("ImageThumBitmap"));
        } catch (Exception e) {
            viewHolder.imageView.setImageResource(android.R.drawable.ic_menu_report_image);
        }

        return convertView;

    }

}


// Download JSON in Background
public class DownloadJSONFileAsync extends AsyncTask<String, Void, Void> {
    String token = getIntent().getExtras().getString("token1");

    protected void onPreExecute() {
        super.onPreExecute();
        showDialog(DIALOG_DOWNLOAD_JSON_PROGRESS);
    }

    @Override
    protected Void doInBackground(String... params) {

        String url = "http://xxx.xxx.xxx/card/all/20/0/?token="+token;
        JSONArray data = null;
        try {

            JSONObject jsonObject = new JSONObject(getJSONUrl(url));

            MyArrList = new ArrayList<HashMap<String, Object>>();
            HashMap<String, Object> map;
            data = jsonObject.getJSONArray("data");
            for (int i = 0; i < data.length(); i++) {
                JSONObject c = data.getJSONObject(i);
                map = new HashMap<String, Object>();

                // Thumbnail Get ImageBitmap To Object
                map.put("cardimage", (String) c.getString("cardimage"));
                map.put("ImageThumBitmap",(Bitmap) loadBitmap(c.getString("cardimage")));
                map.put("categoryid", (String) c.getString("categoryid"));
                MyArrList.add(map);
            }

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }

    protected void onPostExecute(Void unused) {
        ShowAllContent(); // When Finish Show Content
        dismissDialog(DIALOG_DOWNLOAD_JSON_PROGRESS);
        removeDialog(DIALOG_DOWNLOAD_JSON_PROGRESS);
    }

}

在您的
下载jsonfileasync类中

  • 您尚未下载JSON。因此,变量
    JSONArray data
    将始终为空
  • 第33行
    无需使用
    新的ArrayList
    您需要访问存储在
    下载JSonfileasync类
    中的ArrayList。在下面查找更新的代码

    public class DownloadJSONFileAsync extends AsyncTask<String, Void, Void> {
    
    String token = getIntent().getExtras().getString("token1");
    JSONObject response = null;
    
    protected void onPreExecute() {
        super.onPreExecute();
        showDialog(DIALOG_DOWNLOAD_JSON_PROGRESS);
    }
    
    @Override
    protected Void doInBackground(String... params) {
    
        String url = "http://xxx.xxx.xxx/card/all/20/0/?token="+token;
        JSONArray response = //YOUR JSON ARRAY AFTER DOWNLOADING;
        return null;
    }
    
    protected void onPostExecute(Void unused) {
        ShowAllContent(JSONArray); // When Finish Show Content and send the Response JSONARRAY and display the content on the GridView
        dismissDialog(DIALOG_DOWNLOAD_JSON_PROGRESS);
        removeDialog(DIALOG_DOWNLOAD_JSON_PROGRESS);
    }}
    

    在您的
    下载jsonfileasync类中

  • 您尚未下载JSON。因此,变量
    JSONArray data
    将始终为空
  • 第33行
    无需使用
    新的ArrayList
    您需要访问存储在
    下载JSonfileasync类
    中的ArrayList。在下面查找更新的代码

    public class DownloadJSONFileAsync extends AsyncTask<String, Void, Void> {
    
    String token = getIntent().getExtras().getString("token1");
    JSONObject response = null;
    
    protected void onPreExecute() {
        super.onPreExecute();
        showDialog(DIALOG_DOWNLOAD_JSON_PROGRESS);
    }
    
    @Override
    protected Void doInBackground(String... params) {
    
        String url = "http://xxx.xxx.xxx/card/all/20/0/?token="+token;
        JSONArray response = //YOUR JSON ARRAY AFTER DOWNLOADING;
        return null;
    }
    
    protected void onPostExecute(Void unused) {
        ShowAllContent(JSONArray); // When Finish Show Content and send the Response JSONARRAY and display the content on the GridView
        dismissDialog(DIALOG_DOWNLOAD_JSON_PROGRESS);
        removeDialog(DIALOG_DOWNLOAD_JSON_PROGRESS);
    }}
    

    如果要保留
    ArrayList
    ,必须通过以下方式创建一个新的
    字符串[]

    String[] urls = new String[MyArrList.size()];
    for(int i=0; i<MyArrList.size(); i++){
       urls[i] = MyArrList.get(i).get("cardimage");
    }
    
    String[]url=新字符串[MyArrList.size()];
    
    对于(int i=0;i如果要保留
    ArrayList
    ,则必须通过以下方式创建一个新的
    字符串[]

    String[] urls = new String[MyArrList.size()];
    for(int i=0; i<MyArrList.size(); i++){
       urls[i] = MyArrList.get(i).get("cardimage");
    }
    
    String[]url=新字符串[MyArrList.size()];
    
    对于(inti=0;i1)您拥有
    ArrayList
    ,对吗?2)每个HashMap是否都包含图像URL?它的内容如下
    MyArr.get(position).get(“categoryid”)
    1)您拥有
    ArrayList
    ,对吗?2) 是否每个HashMap都包含图像URL?它包含如下内容
    MyArr.get(position.get(“categoryid”)
    我无法将JSONArray添加到ShowAllContent。请看。请帮我更改一下。我无法将JSONArray添加到ShowAllContent。请看。请帮我修改一下,我怎样才能修改所有的代码呢。我非常想改变它。我想更快地改进它。如何更改所有这些代码。我非常想改变它。我想更快地改进它。
    String[] urls = new String[MyArrList.size()];
    for(int i=0; i<MyArrList.size(); i++){
       urls[i] = MyArrList.get(i).get("cardimage");
    }