1

I have an app which contain recyclerview with some Ads like google and facebook. At The end of recyclerview i want to add a footerview. How do i do that.

code:-

 @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    ViewHolder viewHolder = null;
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    switch (viewType) {
        case 1:
            View contentView = inflater.inflate(R.layout.ad_list_card, parent, false);
            viewHolder = new DealViewHolder(contentView);
            this.sessionManager = new CLoginSessionManager(this.m_Context);
            HashMap<String, String> user = this.sessionManager.getLoginData();
            this.m_szMobileNumber = user.get(CLoginSessionManager.LOGIN_MOBILE);// getting mobile from saved preferences..........
            this.m_szEncryptedPassword = user.get(CLoginSessionManager.LOGIN_PASSWORD);// getting password from shared preferences...
            mHelper = new PreferenceHelper(m_Context);
            break;
        case 2:
            View facebookAdView = inflater.inflate(R.layout.soopermo_fb_card, parent, false);
            viewHolder = new FacebookAdHolder(facebookAdView);
            break;
        case 3:
            View adView = inflater.inflate(R.layout.google_ad_card, parent, false);
            viewHolder = new GoogleAdViewHolder(adView);
            break;
    }
    return viewHolder;
}

 @Override
public int getItemViewType(int position) {
    return this.s_oDataset.get(position).getViewType();
}
Raghav
  • 65
  • 1
  • 12
  • Possible duplicate of [RecyclerView header and footer](https://stackoverflow.com/questions/26585941/recyclerview-header-and-footer) – Sufian Jul 27 '17 at 06:47

1 Answers1

0

You have to add another ViewType in your adapter:

@Override
public int getItemViewType(int position) {
    if (position == data.size()) {
        // footer_view to check in your switch/case
        return FOOTER_VIEW;
    }

    return super.getItemViewType(position);
}

This is the code for you:

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    ViewHolder viewHolder = null;
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    switch (viewType) {
        case 1:
            // your view
            break;
        case 2:
           // your fb viewholder
            break;
        case 3: // your google view holder
            break;
        case FOOTER_VIEW:
            View contentView = inflater.inflate(R.layout.yourFooterView, parent, false);
            viewHolder = new FooterViewHolder(contentView);
            break;
    }
    return viewHolder;
}

Then you can set data to your FooterViewHolder in onBind:

    @Override
    public void onBindViewHolder(SplitMemberViewHolder viewHolder, int position) {
           switch(getItemViewType(position)){
           case 1:
           break;
           case 2:
           case 2:

            break;
           case FOOTER_VIEW:   
             //bind footer data.
           break;
       }
    }
Kingfisher Phuoc
  • 8,052
  • 9
  • 46
  • 86