簡體   English   中英

使用getdatainbackground(android)從解析中檢索多個圖像

[英]Retrieve multiple images from parse with getdatainbackground (android)

我是Android的新手,真的需要一些熟悉Parse API的幫助。 我所做的是設置我的卡片容器,里面裝滿了多張圖片。 然而,真實顯示按照“DownloadBitmap”以隨機順序顯示卡片而不是按照我的想法升序。 可疑的根本原因可能是通過“getdatainbackground()”運行的延遲時間。 有誰知道這個混亂的問題怎么能解決? 我嘗試使用“getdata()”代替,但它確實殺死了性能,似乎不是一個好選擇。 我的代碼如下。

ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("food");
    query.orderByAscending("order");
    query.setLimit(10);
    query.findInBackground(new FindCallback<ParseObject>() {

        @Override
        public void done(final List<ParseObject> objects, ParseException e) {
            for (ParseObject obj_food : objects) {
                if (obj_food.getInt("order") == order) {

                    final ParseFile file = obj_food.getParseFile("picture");        

                    //bitmap
                    file.getDataInBackground(new GetDataCallback() {
                        public void done(byte[] data, ParseException e) {
                            if (e == null) {                                    
                                Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                                DownloadBitmap.add(bitmap);
                            }                               
                        }
                    });
                }
                order++;
            }
        }
    });

您的主qry應該將鏈接URL的JSON返回到您的位圖的Parse.files。

您應該使用圖像庫(UIL,Picasso,AQuery ...)來管理方面(網絡GET,緩存GET)基於用於卡的Layout.VIEW的asNeeded位圖。

當你需要一個卡的布局/視圖的bitMap時,你只需讓圖像庫管理它......這些庫設計用於插入'getView()'工作流程。

示例AQry(parms引用視圖和圖像的Url列表)

 private static AQuery mAq;
            mAq.id(holder.imgView).width(110).image(mm.getImages().get(0).getUrl().toString(),
                    true, true, 0, R.drawable.default_video, null, 0, mAspectRatio);

example Picasso


        @Override public View getView(int i, View view, ViewGroup viewGroup) {
            //TODO how is this called w val=-1
            if(i < 0) i = 0;
            ViewHolder viewHolder;
            if (view == null) {
                viewHolder = new ViewHolder();
                view = LayoutInflater.from(viewGroup.getContext())
                        .inflate(R.layout.grid_item, viewGroup, false);
                viewHolder.image = (ImageView) view.findViewById(R.id.image);
                viewHolder.text = (TextView) view.findViewById(R.id.text);
                view.setTag(viewHolder);
            }else{
                viewHolder = (ViewHolder) view.getTag();
            }

            Picasso.with(view.getContext())
                    .load(HomeActivity.getUrlbyPosition(i))
                    .into(viewHolder.image);

            if (HomeActivity.getMsgByPosition(i).length() > 39) {
                viewHolder.text.setText(HomeActivity.getMsgByPosition(i).substring(0, 39));
            }else{viewHolder.text.setText(HomeActivity.getMsgByPosition(i));
            }
            return view;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM