Надо изменить
private ArrayList<GalleryGridObject> galleryList = new ArrayList<>();
на
private List<GalleryGridObject> galleryList;
В итоге код фрагмента (или активити) должен получиться так
В итоге код фрагмента (или активити) должен получиться такpublic class TestFragment extends Fragment {
private List<GalleryGridObject> galleryList;
private TestAdapter mAdapter;
private RecyclerView recyclerView;
private DatabaseReference mRef;
private FirebaseDatabase database;
public TestFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_coupons, container, false);
recyclerView = view.findViewById(R.id.my_recycler_view);
recyclerView.setHasFixedSize(true);
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
galleryList = new ArrayList<>();
mAdapter = new TestAdapter(galleryList);
database = FirebaseDatabase.getInstance();
//mRef = database.getReference().child("Data");
mRef = database.getReference("Data");
mRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
GalleryGridObject image = dataSnapshot.getValue(GalleryGridObject.class);
galleryList.add(image);
recyclerView.setAdapter(mAdapter);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
return view;
}
public class TestAdapter extends RecyclerView.Adapter<TestAdapter.ViewHolder>{
private Context mContext;
private List<GalleryGridObject> galleryArrayList;
public TestAdapter( List<GalleryGridObject> galleryArrayList){
//this.mContext=mContext;
this.galleryArrayList=galleryArrayList;
}
@NonNull
@Override
public TestAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_coupons, parent, false);
return new TestAdapter.ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull TestAdapter.ViewHolder holder, int position) {
//GalleryGridObject gallery = galleryArrayList.get(position);
//Glide.with(mContext).load(galleryArrayList.get(position).getImage()).into(holder.imageGallery);
holder.textView.setText(galleryArrayList.get(position).getTitle());
Picasso.get().load(galleryArrayList.get(position).getImage()).into(holder.imageGallery);
}
@Override
public int getItemCount() {
if(galleryArrayList==null) return 0;
return galleryArrayList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imageGallery;
public TextView textView;
public ViewHolder(View view) {
super(view);
imageGallery = itemView.findViewById(R.id.coupons_picture);
textView = itemView.findViewById(R.id.coupons_title);
}
}
}
}
Вот модель для RecyclerView (обязательно нужен пустой конструктор)@IgnoreExtraProperties
public class GalleryGridObject {
String title, image;
public GalleryGridObject () {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public GalleryGridObject(String title, String image) {
this.title = title;
this.image = image;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
Единственное, что я так и не понял, это почему картинки не должны лежать сразу в родительской папке (в моем случае Data, которую указываем в
mRef = database.getReference("Data");
), а должны иметь собственные папки, на подобии этого (тут вместо папки "Data" показана папка "KFC", но суть не меняется