วิธีแสดง Firebase Storage Images ใน GridView
ฉันเพิ่งเริ่มใช้ Android ฉันกำลังเรียนรู้เรื่อง gridview..i แสดงรายการรูปภาพจากที่วาดได้ไปจนถึง gridview แต่ฉันไม่รู้วิธีแสดงภาพจาก Firebase Storage ใน gridview
ฉันเห็นบทช่วยสอนมากมายและฉันลองใช้คำตอบ Stackoverflow มากมาย แต่ฉันไม่สามารถหาสิ่งที่ต้องการได้
ฉันสร้างโฟลเดอร์ใหม่ใน Firebase Storage และฉันอัปโหลด 6 ภาพที่นั่นและฉันต้องการแสดงภาพทั้งหมด 6 ภาพใน gridview
นี่คือรหัสของฉันว่าฉันแสดงภาพจากที่วาดได้อย่างไรและฉันไม่รู้วิธีโหลด url นั้นและใน glide ฉันสับสนและสับสนไปหมด
public class NewListCreate extends BottomSheetDialogFragment {
int[] images = {R.drawable.menu, R.drawable.musicbox, R.drawable.shoppingbag, R.drawable.shoppingcart, R.drawable.wallet, R.drawable.weddingdress};
int imageRes = images[0];
public NewListCreate() {
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.new_list_create, container, false);
ImageButton done = view.findViewById(R.id.done);
final EditText listname = (EditText) view.findViewById(R.id.listname);
final GridView gridView = (GridView) view.findViewById(R.id.gridview);
final CustomAdpter customAdpter = new CustomAdpter(images, getContext());
gridView.setAdapter(customAdpter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
customAdpter.selectedImage = i;
customAdpter.notifyDataSetChanged();
imageRes = images[i];
}
});
done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String itemname = listname.getText().toString();
if (!TextUtils.isEmpty(listname.getText().toString())) {
startActivity(new Intent(getContext(), CheckslateHome.class).putExtra("data", itemname).putExtra("image", imageRes));
dismiss();
} else {
Toast.makeText(getContext(), "List Name not Empty ", Toast.LENGTH_SHORT).show();
}
}
});
return view;
}
public class CustomAdpter extends BaseAdapter {
public int selectedImage = 0;
private int[] icons;
private Context context;
private LayoutInflater layoutInflater;
public CustomAdpter(int[] icons, Context context) {
this.icons = icons;
this.context = context;
this.layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return icons.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null) {
view = layoutInflater.inflate(R.layout.image_list, viewGroup, false);
}
StorageReference storageReference = FirebaseStorage.getInstance().getReference();
ImageView imageicons = view.findViewById(R.id.image);
if (i < icons.length) {
imageicons.setImageResource(icons[i]);
if (i != selectedImage) {
imageicons.setImageAlpha(50);
}
imageicons.setScaleType(ImageView.ScaleType.CENTER_CROP);
// imageicons.setLayoutParams(new GridView.LayoutParams(150, 150));
if (i == selectedImage) {
view.setBackgroundColor(Color.WHITE);
} else {
view.setBackgroundColor(Color.TRANSPARENT);
}
}
;
return view;
}
}
}
นี่คือข้อมูลการจัดเก็บ firebase

คำตอบ
ฉันได้สร้างคลาสFirebaseUtilsจากภายในนั้นฉันมีวิธีการFirebaseแบบคงที่มากมายที่ฉันสามารถเลือกได้ (ไม่ต้องใช้การเล่นสำนวน)
เพื่อให้บรรลุสิ่งที่คุณต้องการเพียงสร้างลูปจากนั้นเรียกใช้เมธอด downloadPic ด้านล่าง
for( int index = 0; index < noOfPhotos; index++ )
FirebaseUtils.downloadPic( ivPic[index], "Photos/", image[index] );
ivPicคือมุมมองภาพ
picToDisplayคือรูปที่ดาวน์โหลดจาก storage
storageFolderคือโฟลเดอร์บน firebase เช่นPhotos /
picToDownloadคือชื่อของรูปที่อยู่ในstorageFolder
noOfPhotosคือจำนวนรูปภาพที่คุณมีซึ่งเห็นได้ชัดว่าคุณสามารถตั้งค่าการสืบค้นและโหลดได้ ให้เป็นArrayList
เพื่อความสะดวกสบาย
//////////////////////////////////////////////////////////////////////////////////
private static void loadPicIntoGlide( @NonNull ImageView ivPic,
@NonNull String picToDisplay )
{
if( picToDisplay.isEmpty() )
{
Glide.with( ivPic.getContext() )
.load( R.mipmap.ic_default_pic )
.into( ivPic );
}
else
{
Glide.with( ivPic.getContext() )
.load( picToDisplay )
.into( ivPic );
}
}
///////////////////////////////////////////////////////////////////////////////////
public static void downloadPic( @NonNull ImageView ivPicView,
@NonNull String storageFolder,
@NonNull String picToDownload )
{
StorageReference storageRef = FirebaseStorage.getInstance().getReference();
Uri uri = Uri.fromFile( new File( picToDownload ) );
StorageReference storageReference = storageRef.child(
storageFolder + picToDownload );
storageReference.getDownloadUrl().addOnSuccessListener(
new OnSuccessListener<Uri>()
{
@Override
public void onSuccess( Uri uri )
{
String actPic = uri.toString();
loadPicIntoGlide( ivPicView, actPic );
}
} )
.addOnFailureListener( new OnFailureListener()
{
@Override
public void onFailure( @NonNull Exception e )
{
loadPicIntoGlide( ivPicView, "" );
}
} );
}