首页代码重构

2019-06-25  本文已影响0人  zhoulikai

目标描述

目前缺陷

代码改造

/**
 * 首页item
 *
 * @author kaily_zhou
 * @date 2018/11/27 下午1:46
 */
public interface IItemHome {
    public int itemLayoutId();

    public void itemData(BaseViewHolder helper, HomeModuleListInfo item);

    public void updateData(NewHomePageInfo homePageInfo, CommunityHomeInfo communityHomeInfo);
}
private Map<Integer, IItemHome> mapItem = new HashMap<>();
/**
     * 添加相应类型item
     *
     * @param type
     * @param itemHome
     */
    private void addItemHomeType(int type, IItemHome itemHome) {
        if (itemHome != null) {
            mapItem.put(type, itemHome);
            addItemType(type, itemHome.itemLayoutId());
        }
    }
/**
     * 初始化item实现类,并添加到map中去
     */
    private void initItemHome() {
        //如废弃此类型的item,只要注释掉此句即可
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_DEFAULT, new ItemHomeDefault(context, homePageInfo, communityHomeInfo));
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_WEEK_RECOMMEND, new ItemHomeWeekRecommend(context, homePageInfo, communityHomeInfo));
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_VIP, new ItemHomeVip(context, homePageInfo, communityHomeInfo));
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_EXPERIENCE, new ItemHomeExperience(context, homePageInfo, communityHomeInfo));
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_CODE_BOOK_LIST, new ItemHomeTopicalBook(context, homePageInfo, communityHomeInfo));
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_CODE_RECOMMEND_LIST, new ItemHomeRecommend(context, homePageInfo, communityHomeInfo));
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_CODE_CLASSIFY, new ItemHomeClassify(context, homePageInfo, communityHomeInfo));
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_CODE_NEW_BOOK_LIST, new ItemHomeNewBook(context, homePageInfo, communityHomeInfo));
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_CODE_BANNER_LIST, new ItemHomeBanner(context, homePageInfo, communityHomeInfo));
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_CODE_PACK_LIST,
                new ItemHomeCoursePack(context, homePageInfo, communityHomeInfo, ItemHomeCoursePack.COURSE_PACK_TYPE));
        addItemHomeType(HomeModuleListInfo.ITEM_TYPE_CODE_PACK_OPTION_LIST,
                new ItemHomeCoursePack(context, homePageInfo, communityHomeInfo, ItemHomeCoursePack.COURSE_OPT_PACK_TYPE));
    }
  //根据后台配置信息寻找具体类型填充数据
  @Override
    protected void convert(BaseViewHolder helper, HomeModuleListInfo item) {
        int itemViewType = helper.getItemViewType();
        IItemHome itemHome = getItemHomeType(itemViewType);
        if (itemHome != null && homePageInfo != null && communityHomeInfo != null && item != null && "1".equals(item.getDisplayFlag())) {
            setItemVisible(helper, View.VISIBLE);
            itemHome.itemData(helper, item);
        } else {
            setItemVisible(helper, View.GONE);
        }
    }
package com.chiyue.qiye.domain.main.home.item;


import android.content.Context;
import android.view.View;

import com.chad.library.adapter.base.BaseViewHolder;
import com.chiyue.qiye.R;
import com.chiyue.qiye.bean.CommunityHomeInfo;
import com.chiyue.qiye.bean.HomeModuleListInfo;
import com.chiyue.qiye.bean.NewHomePageInfo;

/**
 * item默认类型
 *
 * @date 2018/11/27 下午2:08
 * @author: kaily_zhou
 */
public class ItemHomeDefault extends BaseItemHome {
    public ItemHomeDefault(Context context, NewHomePageInfo homePageInfo,
                           CommunityHomeInfo communityHomeInfo) {
        super(context, homePageInfo, communityHomeInfo);
    }

    @Override
    public int itemLayoutId() {
        return R.layout.item_community_home_default;
    }

    @Override
    public void itemData(BaseViewHolder helper, HomeModuleListInfo item) {
        setItemVisible(helper, View.GONE);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读