Multi view adapter

Implement the following interface:

public static abstract class Adapter<VH extends ViewHolder> {
    public abstract VH onCreateViewHolder(ViewGroup parent, int viewType);
    public abstract void onBindViewHolder(VH holder, int position);
    public abstract int getItemViewType(int position);
    ...
}

then create different kinds of ViewHolder for different view type.

Example:

@Override
public int getItemViewType(int position) { // this is the key point of supporting multi-type of views.
    NewsDigestPresenter digest = (NewsDigestPresenter) mChannelPresenter.allCachedDigests().get(position);
    return digest.getDigestType().ordinal();
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    NewsDigestType digestType = NewsDigestType.values()[viewType];
    switch (digestType) {
        case SingleImageArticle:
            SingleImageArticleDigestView singleImageArticleDigestView = new SingleImageArticleDigestView();
            return new SingleImageArticleDigestViewHolder(singleImageArticleDigestView);
        case MultiImagesArticle:
            MultiImagesArticleDigestView multiImagesArticleDigestView = new MultiImagesArticleDigestView();
            return new MultiImagesArticleDigestViewHolder(multiImagesArticleDigestView);
        case Images:
            ImagesDigestView imagesDigests = new ImagesDigestView();
            return new ImagesDigestViewHolder(imagesDigests);
    }
    return null;
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    int type = getItemViewType(position);
    NewsDigestType digestType = NewsDigestType.values()[type];
    NewsDigestPresenter newsDigestPresenter = (NewsDigestPresenter) mChannelPresenter.allCachedDigests().get(position);
    switch (digestType) {
        case SingleImageArticle:
            SingleImageArticleDigestViewHolder singleImageArticleDigestViewHolder = (SingleImageArticleDigestViewHolder)holder;
            singleImageArticleDigestViewHolder.setDataBinding(newsDigestPresenter);
            if(mIsFirstScreen) {
                singleImageArticleDigestViewHolder.loadImages();
            }
            break;
        case MultiImagesArticle:
            MultiImagesArticleDigestViewHolder multiImagesArticleDigestViewHolder = (MultiImagesArticleDigestViewHolder)holder;
            multiImagesArticleDigestViewHolder.setDataBinding(newsDigestPresenter);
            if(mIsFirstScreen) {
                multiImagesArticleDigestViewHolder.loadImages();
            }
            break;
        case Images:
            ImagesDigestViewHolder imagesDigestViewHolder = (ImagesDigestViewHolder)holder;
            imagesDigestViewHolder.setDataBinding(newsDigestPresenter);
            if (mIsFirstScreen) {
                imagesDigestViewHolder.loadImages();
            }
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值