Firebase database
In child("AdUsersINFO") I have a childs for users (userid) in this childs we have a posts .
My goal was to get a random post and display the data in RecyclerView
Currently, I have this code on onCreateView,
but it's not getting any data:
recycle = (RecyclerView) view.findViewById(R.id.recycle);
mAdUserDatabse = FirebaseDatabase.getInstance().getReference().child("AdUsersINFO");
mAdUserDatabse.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int ads = (int) dataSnapshot.getChildrenCount();
int rand = new Random().nextInt(ads);
Iterator itr = dataSnapshot.getChildren().iterator();
for (int i = 0; i < rand; i++) {
list = new ArrayList<Adver>();
Adver value = dataSnapshot.getValue(Adver.class);
Adver fire = new Adver();
String type = value.getType();
String categories = value.getCategories();
String city = value.getCity();
fire.setType(type);
fire.setCategories(categories);
fire.setCity(city);
list.add(fire);
itr.next();
}
RecyclerAdapter recyclerAdapter = new RecyclerAdapter(list, getContext());
final RecyclerView.LayoutManager recyce = new GridLayoutManager(getContext(), 2);
recycle.setLayoutManager(recyce);
recycle.setItemAnimator(new DefaultItemAnimator());
recycle.setAdapter(recyclerAdapter);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w("Failed to read value.", error.toException());
}
});
And this is my Adapter class
CardAdapter class
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.MyHoder> {
List<Adver> list;
Context context;
public CardAdapter(List<Adver> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public MyHoder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.card, parent, false);
return new MyHoder(view);
}
@Override
public void onBindViewHolder(MyHoder holder, int position) {
Adver mylist = list.get(position);
holder.type.setText(mylist.getType());
holder.categories.setText(mylist.getCategories());
holder.city.setText(mylist.getCity());
holder.availability.setText(mylist.getAvailability());
holder.cost.setText(mylist.getCost());
}
@Override
public int getItemCount() {
int arr = 0;
try {
if (list.size() == 0) {
arr = 0;
} else {
arr = list.size();
}
} catch (Exception e) {
}
return arr;
}
class MyHoder extends RecyclerView.ViewHolder {
TextView type, categories, city, availability, cost;
ImageView img;
public MyHoder(View itemView) {
super(itemView);
type = (TextView) itemView.findViewById(R.id.vType);
categories = (TextView) itemView.findViewById(R.id.vCategories);
city = (TextView) itemView.findViewById(R.id.vCity);
availability = (TextView) itemView.findViewById(R.id.vAvailability);
cost = (TextView) itemView.findViewById(R.id.vPrice);
}
}
}