在RecyclerView中获取随机数据Android Firebase数据库 [英] Get random data android firebase database in RecyclerView
本文介绍了在RecyclerView中获取随机数据Android Firebase数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Firebase数据库
Firebase database
在child("AdUsersINFO")中,我有一个用户的子级(userid),在这个子级中,我们有一个帖子.
In child("AdUsersINFO") I have a childs for users (userid) in this childs we have a posts .
我的目标是随机发帖并在RecyclerView
My goal was to get a random post and display the data in RecyclerView
当前,我在onCreateView,
上有此代码,但没有获取任何数据:
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());
}
});
这是我的适配器类
CardAdapter类
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);
}
}
}
推荐答案
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);
for(DataSnapshot data: dataSnapshot.getChildren()){
for(DataSnapshot datas: data.getChildren()){
for(int i = 0; i < rand; i++) {
list = new ArrayList<Adver>();
Adver value = datas.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);
}}}}
这篇关于在RecyclerView中获取随机数据Android Firebase数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文