Android迭代RecyclerView中的嵌套对象

时间:2015-07-03 19:01:49

标签: android android-recyclerview

我有一个包含Match对象列表的Tournament对象。我想展示一些比赛详情,然后列出下面的比赛以及一些细节。问题是它可以是1场锦标赛到3场比赛或1-4场等。

锦标赛1     

    +匹配1
    
    +匹配2

锦标赛2     

    +匹配1
    
    +匹配2
    
    +匹配3

我一直在尝试在RecyclerView中使用多个视图并且可以使1-1关系正常工作但是我不确定在哪里添加迭代,我一直在用onBindViewHolder来测试各种事物没有用,一点方向都会受到赞赏。

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

    private List<Tournament> mTournaments;
    private static final int VIEW_TYPE_Tournament  = 0;
    private static final int VIEW_TYPE_Match = 1;

    class TournamentHolder extends RecyclerView.ViewHolder {
        ...
    }

    class MatchHolder extends RecyclerView.ViewHolder {
        ...
    }

    @Override
    int getItemViewType(int position) {
        return mTournaments.get(position).getType();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        switch (viewType) {
            case VIEW_TYPE_Tournament: return new TournamentHolder (...);
            case VIEW_TYPE_Match: return new MatchHolder (...);
            default: return new TournamentHolder(...);
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        switch (getItemViewType(position)) {
            case VIEW_TYPE_Tournament:
                TournamentHolder tournamentHolder = (TournamentHolder)holder;
                ..
                break;
            case VIEW_TYPE_Match:
                MatchHolder matchHolder = (MatchHolder)holder;
                ...
                break;
            default:
                ....
                break;
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

我通过传入一个充当地图的单独数组解决了这个问题,基本上我的适配器看起来像adapter(map, tournament, matches),这使我可以适当地显示我的视图。

如果你有一个更好的方法,请随时告诉我。