2017-02-15 55 views
1

我開始進行Android編程。 我有一個問題,因爲幾天,我想問你,如果你能幫助我。 我想顯示具有不同佈局,文本和圖像的recyclerView。 我有這個代碼,第一種類型,文本正在工作,但圖像沒有出現。未在RecyclerView中顯示圖像

謝謝。

public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { 
    Historias object = mList.get(position); 
    if (object != null) { 
     switch (object.getTipoHistoria()) { 
      case tipo_texto: 
       ((CityViewHolder) holder).mTitle.setText(object.getTexto()); 
       break; 
      case tipo_imagen: 

       StorageReference storageRef = storage.getReferenceFromUrl("gs://xx.appspot.com/imagenes/un-gato-bebe-433.jpg"); 

       storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() { 
        @Override 
        public void onSuccess(Uri uri) { 
         new RetrieveFeedTask().execute(uri.toString()); 

        } 
       }).addOnFailureListener(new OnFailureListener() { 
        @Override 
        public void onFailure(@NonNull Exception exception) { 
         // Handle any errors 
        } 
       }).addOnCompleteListener(new OnCompleteListener<Uri>() { 
        @Override 
        public void onComplete(@NonNull Task<Uri> task) { 
         ((EventViewHolder) holder).mImage.setImageBitmap(feed); 
        } 
       }); 

       break; 
     } 
    } 
} 

回答

1

我推薦使用特殊的lib從web或sd下載照片。這裏是一些:


Picasso

Picasso.with(context).load("path_to_image").into(imageView); 

Glide

Glide.with(this).load("path_to_image").into(imageView); 
1

只是刪除開關的情況下,因爲你知道,當用戶進入switch語句僅1例將被執行,所以只有你的設置文字被執行而不是圖像

public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { 
    Historias object = mList.get(position); 

       holder.mTitle.setText(object.getTexto()); 


       StorageReference storageRef = storage.getReferenceFromUrl("gs://xx.appspot.com/imagenes/un-gato-bebe-433.jpg"); 

       storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() { 
        @Override 
        public void onSuccess(Uri uri) { 
         new RetrieveFeedTask().execute(uri.toString()); 

        } 
       }).addOnFailureListener(new OnFailureListener() { 
        @Override 
        public void onFailure(@NonNull Exception exception) { 
         // Handle any errors 
        } 
       }).addOnCompleteListener(new OnCompleteListener<Uri>() { 
        @Override 
        public void onComplete(@NonNull Task<Uri> task) { 
         holder.mImage.setImageBitmap(feed); 
        } 
       }); 


     } 
    } 
} 

我建議你使用畢加索或滑動庫來加載圖像,它的超級簡單加載圖像

編輯。

只是使用holder。而不是((EventViewHolder) holder)