【问题标题】:Bus Seating Arrangement same as in RedBus, Android巴士座位安排与 RedBus, Android 相同
【发布时间】:2019-06-23 00:49:12
【问题描述】:

我正在尝试实现一个与 RedBus 应用程序非常相似的巴士座位预订应用程序。我偶然发现了那里的座位安排,我在那里被震撼了。

我真的需要您的帮助才能实现这一目标。我尝试过使用 Recycler View,但这并没有让我进入确切的布局。

我尝试过使用回收站视图,我的布局如下,

但是,redbud 应用程序的实际屏幕截图是,

我已经浏览了 git 中可用的代码之一

https://github.com/TakeoffAndroid/SeatBookingRecyclerView

但是,使用上面的代码,我可以得到布局设计,但问题是,说如果有 41 个座位,但使用上面的 git 代码会显示 33 个座位在屏幕上出现就像,

非常感谢您的帮助。

片段代码:

     numOfColumns = 4;
     mArrayBusSeats = new ArrayList<>();
    for (int i = 0; i < mArraySeats.size(); i++) {
                if (i % numOfColumns == 0 || i % numOfColumns == (numOfColumns - 1)) {
                    BusLayoutModel model = mArraySeats.get(i);
                    model.setSeatType(AbstractItem.TYPE_EDGE);
                    mArrayBusSeats.add(model);
                } else if (i % numOfColumns == 1 || i % numOfColumns == (numOfColumns - 2)) {
                    BusLayoutModel model = mArraySeats.get(i);
                    model.setSeatType(AbstractItem.TYPE_CENTER);
                    mArrayBusSeats.add(model);
                } else {
                    BusLayoutModel model = new BusLayoutModel();
                    model.setSeatType(AbstractItem.TYPE_EMPTY);
                    mArrayBusSeats.add(model);
                }
            }

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    在您的示例中,您的 recyclerview 有 3 个 viewTypes - TYPE_EDGE, TYPE_CENTER, TYPE_EMPTY,即座位有 3 种类型。正如你的问题

    假设有 41 个座位,但使用上面的 git 代码会显示 33 个座位

    事实上,这是预期的行为,因为您的 recyclerview 包含一个 viewtype - TYPE_EMPTY,它会打印一个空视图。所以如果你给 41 seats 只有 33 将是可见的,因为其余的座位都是 TYPE_EMPTY 类型的。如果你也算上recyclerview 中的空位,那么你可以看到总数为41。

    【讨论】:

    • 嗯,不过,只有 8 * 5 = 40,最后一个座位在哪里,因为他说是 41(但我同意你关于空位的想法是 viewType = TYPE_EMPTY 的座位)跨度>
    • 我不太明白你的问题,但让我解释一下 - 如果mArraySeats.size() 是 41,它将只提供最多 41 个座位,因此剩余的职位将不会被填补
    • mArraySeats.size() = 41,正如 Op 在他的问题中所述。我的意思是,包括他的截图中的空白,屏幕上只有 40 个座位
    • 这个截图显然不属于numOfColumns = 4;的给定代码,因为它有5列(包括TYPE_EMPTY)。事实上,代码属于他的第一个屏幕截图,其中只有 4 列
    【解决方案2】:

    在您的 Recycler View 实现中尝试降低行高,与 redbus 相比,您的行高几乎翻了一番。

    【讨论】:

      【解决方案3】:

      你试过第5列的数字吗??

      我没有使用这个库,但是当我检查它时,我认为我应该这样做

      numOfColumns = 5;
           mArrayBusSeats = new ArrayList<>();
          for (int i = 0; i < mArraySeats.size(); i++) {
      
                  BusLayoutModel model = mArraySeats.get(i);
      
                      if (i % numOfColumns == 0 || i % numOfColumns == 4) {
                          model.setSeatType(AbstractItem.TYPE_EDGE);
                          mArrayBusSeats.add(model);
                      } else if (i % numOfColumns == 1 || i % numOfColumns == 3) {
                          model.setSeatType(AbstractItem.TYPE_CENTER);
                          mArrayBusSeats.add(model);
                      } else {
                          model.setSeatType(AbstractItem.TYPE_EMPTY);
                          mArrayBusSeats.add(model);
                      }
                  }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-15
        • 1970-01-01
        相关资源
        最近更新 更多