检索Firebase图像作为可绘制的并显示在回收器视图



我已经实现了RecyclerView,显示图像成功,一切都很好现在在我的片段,我想从Firebase加载图像(图像已经存储在实时数据库与他们的url)这是我的片段代码

public RecyclerView youthRecycler;
public RecyclerView.Adapter recyclerAdapter;
public RecyclerView.LayoutManager recyclerManager;

//i just want to populate this array with drawables from images stored on firebase
int[] imagesArray={R.drawable.youthtable1,R.drawable.youthtable2,R.drawable.youthtable3};
public tableYouthFragment() {
// Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_table_youth, container, false);
}
@Override
public void onStart() {
super.onStart();
//all code goes here
init();
}
public void init()
{
youthRecycler=getActivity().findViewById(R.id.youthRecycler);
youthRecycler.setHasFixedSize(true);
recyclerManager=new LinearLayoutManager(getContext());
youthRecycler.setLayoutManager(recyclerManager);
recyclerAdapter =new MyRecyclerAdpater(getActivity(),imagesArray);
youthRecycler.setAdapter(recyclerAdapter);
}

这个问题已经在这里问过了,但是没有任何经过验证的答案,并且经过验证的答案在kotlin和java答案中要求我改变我的RecyclerView整个实现。我跟进了许多关于滑翔库的教程,但不知道是否有可能将图像加载为可绘制的,或者我必须改变我的整个适配器实现

你的recyclerView应该有一个url列表,你可以在Glide中加载它们,为什么你需要将它们加载为drawable,而Glide可以将它们加载为url:

onBindViewHolder ():

Glide.with(context).load(url).into(holder.imageYouWantToShow);

现在在片段中获取url:

DatabaseRefernce imagesRef = FirebaseDatabase.getInstance().getReference();
ValueEventListener imagesListner = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot imageUrl: dataSnapshot.getChildren()) {
String image = imageUrl.getValue(String.class);
imagesArray.add(image);
}

}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
}
};
imagesRef.addValueEventListener(imagesListner );
recyclerManager=new LinearLayoutManager(getContext());
youthRecycler.setLayoutManager(recyclerManager);
recyclerAdapter = new MyRecyclerAdpater(this,imagesArray);
youthRecycler.setAdapter(recyclerAdapter);

最新更新