如何使用适配器

时间:2017-08-28 12:39:59

标签: android json firebase android-recyclerview admob

我正在尝试从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视图中使用适配器。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题......你应该检索你正在制作这个适配器的活动片段中的数据,并通过它的构造函数传递检索到的对象或适配器中对象的arraylist。

通过适配器从网络检索数据或向网络发送数据绝不是一个好主意。由于网络连接过程可能需要一些时间,因此您不需要在适配器中使用它。

例如

  1. Inside ACTIVITY / FRAGMENT
  2. FirebaseDatabase db = FirebaseDatabase.getInstance();

    1. 然后创建对路径的引用

    2. 检索您的数据并使用arrayList

    3. 将其存储在对象或addOnComlpleteListener
    4. arrayList或对象传递给适配器的构造函数

    5. 在这里,您将拥有之前通过的arrayList或对象,并且可以使用他们携带的数据