GridView에서 Firebase 저장소 이미지를 표시하는 방법
Aug 19 2020
나는 Android를 처음 접하고 gridview를 배우고 있습니다 .i drawable에서 gridview로 이미지 목록을 표시하지만 gridview에서 Firebase Storage의 이미지를 표시하는 방법을 모르겠습니다.
많은 튜토리얼을 보았고 많은 Stackoverflow 답변을 시도했지만 필요한 것을 얻을 수 없습니다.
Firebase 저장소에 새 폴더를 만들고 거기에 6 개의 이미지를 업로드하고 6 개의 이미지를 모두 gridview에 표시하고 싶습니다.
다음은 드로어 블에서 이미지를 표시하는 방법에 대한 내 코드이며 해당 URL을로드하는 방법을 모르겠고 글라이드에서 완전히 혼란스럽고 엉망이되었습니다.
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 저장소 정보입니다.

답변
HemmaRoyD Dec 20 2020 at 05:07
FirebaseUtils 클래스를 만들었습니다. 그 안에서 선택할 수있는 다양한 정적 firebase 메서드가 있습니다.
원하는 것을 얻으려면 루프를 만든 다음 아래의 downloadPic 메서드를 호출하십시오.
for( int index = 0; index < noOfPhotos; index++ )
FirebaseUtils.downloadPic( ivPic[index], "Photos/", image[index] );
ivPic는 이미지이다
picToDisplay는 스토리지에서 다운로드 한 그림입니다
storageFolder는 중포 기지 등의 폴더입니다 : 사진 /
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, "" );
}
} );
}