app/src/main/java/me/zhanghai/android/douya/ui/MergeAdapter.java

(开头部分) 8KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

/*
 * Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
 * All Rights Reserved.
 */

package me.zhanghai.android.douya.ui;

import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import me.zhanghai.android.douya.util.LogUtils;

public class MergeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private RecyclerView.Adapter[] mAdapters;

    private Map<Integer, Integer> mItemViewTypeToAdapterIndexMap = new HashMap<>();

    public MergeAdapter(RecyclerView.Adapter... adapters) {

        mAdapters = adapters;

        for (RecyclerView.Adapter adapter : mAdapters) {
            adapter.registerAdapterDataObserver(new AdapterDataObserver(adapter));
        }

        boolean hasStableIds = true;
        for (RecyclerView.Adapter adapter : mAdapters) {
            if (!adapter.hasStableIds()) {
                hasStableIds = false;
                LogUtils.w("not all adapters have stable ids: " + adapter);
            }
        }
        super.setHasStableIds(hasStableIds);
    }

    public RecyclerView.Adapter[] getAdapters() {
        return mAdapters;
    }

    @Override
    public void setHasStableIds(boolean hasStableIds) {
        throw new UnsupportedOperationException("cannot set hasStableIds on MergeAdapter");
    }

    @Override
    public int getItemCount() {
        int count = 0;
        for (RecyclerView.Adapter adapter : mAdapters) {
            count += adapter.getItemCount();
        }
        return count;
    }

    @Override
    public long getItemId(int position) {
后面还有 197 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。