2015-07-03 87 views
2

我有一个锦标赛对象,其中包含Match对象列表。我想显示一些比赛细节,然后在下面列出比赛中的一些细节。的问题是,它可以是1至锦标赛3匹配或1-4等Android在RecyclerView中迭代嵌套对象

锦标赛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; 
     } 
    } 
} 
+0

查看@Intdef并将其用于您的查看类型。 http://tools.android.com/tech-docs/support-annotations – petey

+0

@petey谢谢,我会研究使用支持注释作为typedefs。 – xPandemic

回答

-1

我已经通过在一个单独的阵列充当地图解决此问题的工作,基本上我的适配器看起来像adapter(map, tournament, matches),这让我可以适当地显示我的意见。

随时让我知道更好的方法,如果你有一个。

+2

地图到底做了什么?我正在尝试在锦标赛内的巡回赛和比赛列表上做几乎相同的事情。 – Aiapaec