我正在尝试从firebase数据库中检索数据,并在每8个项目中放置广告。我已经创建了我的适配器“posts_adapter”,但我不知道如何检索数据以在回收器视图中显示它们。任何人都可以通过展示我如何使用admob从firebase检索数据到回收者视图来帮助我。
这是我的适配器:
public class posts_adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int Posts_View = 0;
private static final int AD_MOB_View = 1;
private final List<retrieve_data> mPosts_List;
public posts_adapter(List<retrieve_data> mPosts_List) {
this.mPosts_List = mPosts_List;}
@Override public int getItemCount() {return mPosts_List.size();}
@Override public int getItemViewType(int position) {return (position % 8 == 0) ? AD_MOB_View : Posts_View;}
@Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
switch (viewType) {
case Posts_View:
View posts_view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.posts_handler_view, viewGroup, false);
return new Posts_View_Holder(posts_view);
case AD_MOB_View:
default:View ad_view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.ad_handler_view, viewGroup, false);
return new NativeExpressAdViewHolder(ad_view);}
}
private class Posts_View_Holder extends RecyclerView.ViewHolder {
Posts_View_Holder(View view) {
super(view);
//POSTS VIEW
}
}
private class NativeExpressAdViewHolder extends RecyclerView.ViewHolder {
NativeExpressAdViewHolder(View view) {
super(view);
//AD VIEW
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
int viewType = getItemViewType(position);
switch (viewType) {
case Posts_View:
//Retrieve data for posts
break;
case AD_MOB_View:
//Retrieve data from ads
default:
}
}
}
这是我的JSON:
},
"posts" : {
"-Ks7yUeMgNpPM5P8nF_7" : {
"describe" : "Hello world",
"location" : "USA, NY",
"latlng" : "0,0",
"photo" : "null",
"time" : 1503389171,
"uid" : "8J1lF6awbAVWm8ruJEKUNWcuG512"
}
},
这是我的班级:
mMain_RecyclerView = (RecyclerView) v.findViewById(R.id.Main_RecyclerView);
mMain_RecyclerView.setHasFixedSize(true);
mMain_RecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
请帮助我如何在每8个视图中使用admob在recycler视图中使用适配器。
答案 0 :(得分:0)
如果我理解你的问题......你应该检索你正在制作这个适配器的活动片段中的数据,并通过它的构造函数传递检索到的对象或适配器中对象的arraylist。
通过适配器从网络检索数据或向网络发送数据绝不是一个好主意。由于网络连接过程可能需要一些时间,因此您不需要在适配器中使用它。
例如
FirebaseDatabase db = FirebaseDatabase.getInstance();
然后创建对路径的引用
检索您的数据并使用arrayList
addOnComlpleteListener
中
将arrayList
或对象传递给适配器的构造函数
在这里,您将拥有之前通过的arrayList
或对象,并且可以使用他们携带的数据