如何在android中的相同recyclerview中填充具有相同字段或属性的不同对象

我将开发足球应用程序,并跟随json响应。( 链接 )

我有两个不同的类,具有不同的名称,但具有相同的属性或字段,并希望显示一个相同的单个RecyclerView

在这里,我有worldmatch和world具有相同的字段,如matchTimestartTimeendTime 。 我使用jsontopojo插件创建了pojo类。

这是主要的事情,我想在0号位置显示世界赛事 ,在俱乐部的基础上展示其他位置世界。 您可以在图片中查看更多详细信息。

在此处输入图像描述

在此处输入图像描述

这必须是第一个标签( 世界 ),类似于欧洲亚洲等具有相似模式的其他标签。

TAB1(世界)

 ---------------position 0 (All match)------------------ | | 930 1100 1130 and so on ( horizontal recyclerview) | ------------------------------------------- ---------------position 1(Barcelona)------------------ | | 1130 1230 1330 1430 and so on ( horizontal recyclerview) | ------------------------------------------- ---------------position 2(Chelsea)------------------ | | 1300 1400 1500 and so on ( horizontal recyclerview) | ------------------------------------------- . . . so on (vertical recyclerview) 

详细说明图片视图:

在此处输入图像描述

我有两个Recyclerview适配器,第一个是显示clubname并将相应的数据传递给其他回收器视图,该视图将显示具有respetive matchTime的水平视图。

填充外部Recyclerview位置0, worldmatch数据并反映所有其他数据,如何在同一个Recyclerview中传递填充的worldmatchworld数据以及如何过滤掉所有选项卡。

仅显示位置0的WorldMatch列表和0以下的世界列表中的matchTime字段。(水平回收视图)

任何人都有任何想法,这对我很有帮助,并高度赞赏这背后的任何想法。 提前致谢。

    有可能的。 现在,您可以在响应解析时间或设置适配器时间时将值设置为另一个类。 我也是这样做的。 例如:

      setmatches(List ww){ List list = new ArrayList<>(); for(club.worlWide cw : ww){ WorldWild w = new WorldWild (); w.setMatchTime(cw.getMatchtimie); .. ...// set values list.add(w); } } 

    现在,您可以向WorldWild添加club.worlWide值。 如果你想改变,反之亦然。

    您可以将worldMatch作为垂直RecyclerView的标题。 在您的情况下,您不需要为RecyclerView两个不同的适配器。 只需在RecyclerView添加标题,使用worldMatch类即可。

    如果您想了解如何在RecyclerView添加页眉或页脚,可以在此处查看答案 。

    完成添加worldMatch作为垂直RecyclerView的标题后,您将在RecyclerView的适配器中传递world数据并相应地显示它们。

    如果您有任何疑惑,请告诉我。

    我鼓励您创建一个TabData类,您将为每个选项卡使用它。

     public class TabData { private List regionTimes; private List>> clubTimes = new ArrayList<>(); public void setRegionTimes(List list) { this.regionTimes = list; } public void putClubTimes(String clubName, List times) { clubTimes.add(new Pair<>(clubName, times); } // Getters } 

    这将是TimeData类。

     public class TimeData { int matchTime; String startTime; String endTime; } 

    然后,例如,要显示第一个选项卡(“世界”选项卡),您应该执行以下操作:

     TabData worldTabData = new TabData(); worldTabData.setRegionTimes(jsonData.getSoccer().getWorldMatch()); for (ClubData clubData : jsonData.getSoccer().getClubs()) { String clubName = clubData.getClubProfile().getClubName(); List times = clubData.getWorld(); worldTabData.putClubTimes(clubName, times); } regionAdapter = new RegionAdapter(worldTabData); 

    这将是外部RecyclerView(垂直)的适配器:

     public class RegionAdapter extends RecyclerView.Adapter { private TabData data; public RegionAdapter(TabData data) { this.data = data; } public int getItemCount() { return 1 + data.getClubTimes().size(); // One row per club plus another one for position 0 } public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (position == 0) { // Set adapter for horizontal recyclerview with data.getRegionTimes() } else { Pair> clubTime = data.getClubTimes(position - 1); // Set textview with club.first // Set adapter for horizontal recyclerview with clubTime.second } } } 

    希望你明白了!

    让我知道。

    谢谢。

    我通过父类做了类似的事情在适配器中使用,但在你的情况下,每个匹配可能只有相同的类。