BaseMultiItemQuickAdapter-多布局

一、BaseMultiItemQuickAdapter使用步驟

1禁舷、Bean繼承implements MultiItemEntity 并實現(xiàn)其方法

public class SmartRefreshBean implements MultiItemEntity {

    /**
     * id : 24
     * name : 時尚
     * alias : null
     * description : 優(yōu)雅地行走在潮流尖端
     * bgPicture : http://img.kaiyanapp.com/22192a40de238fe853b992ed57f1f098.jpeg
     * bgColor :
     * headerImage : http://img.kaiyanapp.com/c9b19c2f0a2a40f4c45564dd8ea766d3.png
     * defaultAuthorId : 2160
     */

    private int id;
    private String name;
    private Object alias;
    private String description;
    private String bgPicture;
    private String bgColor;
    private String headerImage;
    private int defaultAuthorId;
    private int itemType=0;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Object getAlias() {
        return alias;
    }

    public void setAlias(Object alias) {
        this.alias = alias;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getBgPicture() {
        return bgPicture;
    }

    public void setBgPicture(String bgPicture) {
        this.bgPicture = bgPicture;
    }

    public String getBgColor() {
        return bgColor;
    }

    public void setBgColor(String bgColor) {
        this.bgColor = bgColor;
    }

    public String getHeaderImage() {
        return headerImage;
    }

    public void setHeaderImage(String headerImage) {
        this.headerImage = headerImage;
    }

    public int getDefaultAuthorId() {
        return defaultAuthorId;
    }

    public void setDefaultAuthorId(int defaultAuthorId) {
        this.defaultAuthorId = defaultAuthorId;
    }

    public void setItemType(int itemType) {
        this.itemType = itemType;
    }

    @Override
    public int getItemType() {
        return itemType;
    }
}

2、Adapter繼承BaseMultiItemQuickAdapter

public class SmartRefreshMultiAdapter extends BaseMultiItemQuickAdapter<SmartRefreshBean, BaseViewHolder> {
    /**
     * Same as QuickAdapter#QuickAdapter(Context,int) but with
     * some initialization data.
     *
     * @param data A new list is created out of this one to avoid mutable list
     */
    public SmartRefreshMultiAdapter(List<SmartRefreshBean> data) {
        super(data);
        addItemType(1, R.layout.item_smart_refresh);
        addItemType(2, R.layout.item_smart_refresh_2);
    }

    @Override
    protected void convert(BaseViewHolder helper, SmartRefreshBean item) {
        switch (helper.getItemViewType()) {
            case 1:
                helper.setText(R.id.tv_item_smart_refresh, item.getName());
                GlideApp.with(mContext).load(item.getBgPicture()).into((ImageView) helper.getView(R.id.iv_item_smart_refresh));
                break;
            case 2:
                helper.setText(R.id.tv_item_smart_refresh_2, item.getName());
                break;
        }
    }
}

3毅往、presenter提供數(shù)據(jù)并設(shè)置ItemType

 public void getData() {
        model.getSmartRefreshData()
                .subscribeOn(Schedulers.io())
                .unsubscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .compose(RxLifeCycleUtils.<List<SmartRefreshBean>>bindToLifecycle(view))
                .map(new Function<List<SmartRefreshBean>, List<SmartRefreshBean>>() {
                    @Override
                    public List<SmartRefreshBean> apply(List<SmartRefreshBean> smartRefreshBeanList) throws Exception {
                        List<SmartRefreshBean> list = new ArrayList<>();
                        for (int i = 0; i < smartRefreshBeanList.size(); i++) {
                            if (i % 2 == 0) {
                                smartRefreshBeanList.get(i).setItemType(1);
                            } else {
                                smartRefreshBeanList.get(i).setItemType(2);
                            }
                            list.add(smartRefreshBeanList.get(i));
                        }
                        return list;
                    }
                })
                .subscribe(new CustomerSubscribe<List<SmartRefreshBean>>() {
                    @Override
                    public void onNext(List<SmartRefreshBean> smartRefreshBeans) {
                        view.showContent(smartRefreshBeans);
                    }
                });
    }

4牵咙、具體調(diào)用

public class SmartRefreshActivity extends BaseActivity<SmartRefreshPresenter> implements SmartRefreshContract.ISmartRefreshView {
    @BindView(R.id.srl_smart_refresh)
    SmartRefreshLayout srl_smart_refresh;
    @BindView(R.id.rv_smart_refresh)
    RecyclerView rv_smart_refresh;
//    private SmartRefreshAdapter adapter;
    private SmartRefreshMultiAdapter adapter;
    private List<SmartRefreshBean> smartRefreshBeanList = new ArrayList<>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_smart_refresh);
        ButterKnife.bind(this);
        presenter = new SmartRefreshPresenter(this);
        srl_smart_refresh.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(RefreshLayout refreshLayout) {
                presenter.getData();
            }
        });
        srl_smart_refresh.setEnableLoadMore(false);
//        adapter = new SmartRefreshAdapter(smartRefreshBeanList);
        adapter = new SmartRefreshMultiAdapter(smartRefreshBeanList);
        rv_smart_refresh.setLayoutManager(new LinearLayoutManager(this));
        rv_smart_refresh.setItemAnimator(new DefaultItemAnimator());
        rv_smart_refresh.setHasFixedSize(true);
        rv_smart_refresh.setAdapter(adapter);
        srl_smart_refresh.autoRefresh();
    }

    @Override
    public void showContent(List<SmartRefreshBean> smartRefreshBeans) {
        srl_smart_refresh.finishRefresh();
        srl_smart_refresh.finishLoadMore();
        smartRefreshBeanList.clear();
        smartRefreshBeanList.addAll(smartRefreshBeans);
        adapter.notifyDataSetChanged();
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市攀唯,隨后出現(xiàn)的幾起案子洁桌,更是在濱河造成了極大的恐慌,老刑警劉巖侯嘀,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件另凌,死亡現(xiàn)場離奇詭異,居然都是意外死亡残拐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門碟嘴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溪食,“玉大人,你說我怎么就攤上這事娜扇〈砦郑” “怎么了栅组?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枢析。 經(jīng)常有香客問我玉掸,道長,這世上最難降的妖魔是什么醒叁? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任司浪,我火速辦了婚禮,結(jié)果婚禮上把沼,老公的妹妹穿的比我還像新娘啊易。我一直安慰自己,他們只是感情好饮睬,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布租谈。 她就那樣靜靜地躺著,像睡著了一般捆愁。 火紅的嫁衣襯著肌膚如雪割去。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天昼丑,我揣著相機與錄音呻逆,去河邊找鬼。 笑死矾克,一個胖子當著我的面吹牛页慷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胁附,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼酒繁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了控妻?” 一聲冷哼從身側(cè)響起州袒,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弓候,沒想到半個月后郎哭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡菇存,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年夸研,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片依鸥。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡亥至,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情姐扮,我是刑警寧澤絮供,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站茶敏,受9級特大地震影響壤靶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惊搏,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一贮乳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胀屿,春花似錦塘揣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至葡兑,卻和暖如春奖蔓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讹堤。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工吆鹤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洲守。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓疑务,卻偏偏與公主長得像,于是被迫代替她去往敵國和親梗醇。 傳聞我的和親對象是個殘疾皇子知允,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容