パルカワ2

最近はFlutterをやっています

RecyclerViewにHeaderViewとFooterViewを付けられる HeaderFooterAdapter を作った

HeaderやFooterで各々ViewHolderを作る必要もなかったので、それすらないシンプルなAdapterです。
github.com

// HeaderFooterAdapterを継承する
class MovieAdapter extends HeaderFooterAdapter<ItemViewHolder> {
    private List<String> movies;
    private LayoutInflater layoutInflater;

    MovieAdapter(LayoutInflater layoutInflater) {
        this.layoutInflater = layoutInflater;
    }

    void setMovies(List<String> movies) {
        this.movies = movies;
        notifyDataSetChanged();
    }

    // ItemのViewHolderを作成して返す
    @Override
    protected ItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
        return new ItemViewHolder(
                this.layoutInflater.inflate(R.layout.row_movie, parent, false));
    }

    // ItemのViewHolderを利用する
    @Override
    protected void onBindItemViewHolder(ItemViewHolder holder, int position) {
        holder.setName(this.movies.get(position));
    }

    // Itemの数を返す
    @Override
    protected int getAdapterItemCount() {
        return movies.size();
    }
}

// ActivityなどでAdapterをセットする前にHeaderViewとFooterViewをセットする
MovieAdapter adapter = new MovieAdapter(layoutInflater);
adapter.setHeaderView(headerView);
adapter.setFooterView(footerView);
recyclerview.setAdapter(adapter);

github.com