2015-02-28 3 views
0

Я новичок с Android и очень нуждаюсь в помощи от тех, кто знаком с Parse API. Я сделал настройку своего карточного контейнера, заполненного несколькими изображениями. Тем не менее, реальный дисплей показывает карты в случайной последовательности в соответствии с «DownloadBitmap» вместо возрастания по мере моей мысли. Подозрительной причиной может быть время задержки через «getdatainbackground()». Кто-нибудь знает, как решить эту неупорядоченную проблему? Я попытался использовать «getdata()» вместо этого, но он действительно убивает производительность и кажется не очень хорошим вариантом. Мой код выглядит следующим образом.Извлечь несколько изображений из синтаксического анализа с помощью getdatainbackground (android)

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++; 
      } 
     } 
    }); 

ответ

0

Ваш главный qry должен возвращать JSON для связанных URL-адресов в Parse.files, которые являются вашими растровыми изображениями.

Вы должны использовать изображение lib (UIL, Picasso, AQuery ...) для управления аспектами (Network GET, cache GET) на основе asNeeded растрового изображения для Layout.VIEW для карты.

Если вам нужна битовая карта для макета/вида карты, вы просто позволяете библиотеке изображений управлять ею ... Эти библиотеки предназначены для перехода к рабочим процессам 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; 
     } 
+0

Я не уверен, как изменить мой код, основанный на ваше предложение ?? Когда я заменил файл «file.getDataInBackground» на «file.getData()» или попытался использовать рекурсию, проблема последовательности будет решена, но с очень низкой скоростью загрузки изображений в мой контейнер. Так что я действительно надеюсь, что вы используете «file.getDataInBackground» с любым другим методом. СПАСИБО! –

Смежные вопросы