巴士座位安排与RedBus相同,适用于Android。

3

我正在尝试实现一个公共汽车座位预订应用程序,与RedBus应用程序非常相似。我遇到了座位安排的问题,困扰着我。

我真的需要你的帮助来实现这一目标。我已经尝试使用RecyclerView,但那并不能使我获得完全正确的布局。

我已经尝试使用RecyclerView,我的布局如下:

enter image description here

然而,Redbud应用程序的实际屏幕截图如下:

enter image description here

我已经阅读了一个在git上可用的代码。

https://github.com/TakeoffAndroid/SeatBookingRecyclerView

但是,使用上面的代码,我可以得到布局设计,但问题在于,比如说有41个座位,但使用上述Git代码,屏幕上只会显示33个座位,如下所示:

enter image description here

非常感谢您的帮助。

代码片段:

     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);
                }
            }
3个回答

1
在你的示例中,你的recyclerview有三种viewType - TYPE_EDGE, TYPE_CENTER, TYPE_EMPTY,即座位有三种类型。就像在你的问题中所述,

比如说有41个座位,但使用上面的git代码只会显示33个座位

事实上,这是预期的行为,因为你的recyclerview包括一个viewtype - TYPE_EMPTY,它打印一个空视图。因此,如果你给出41个座位,只有33个座位可见,因为其余的座位属于TYPE_EMPTY类型。如果你也计算一下recyclerview中的空位置,那么你可以看到总数是41。

嗯,然而,它只有8 * 5 = 40个座位,最后一个座位在哪里呢?因为他说是41个(但我同意你的观点,即空白空间是viewType = TYPE_EMPTY的座位)。 - Jacky
我不太明白你的问题,但是让我解释一下 - 如果 mArraySeats.size() 是 41,它只会渲染座位直到 41,因此剩余的位置将不会被填充。 - Navneet Krishna
mArraySeats.size() = 41,正如Op在他的问题中所述。我的意思是,在他的屏幕截图中,包括空格,只有40个座位。 - Jacky
1
这个截图明显不属于 numOfColumns = 4; 的代码,因为它有5列(包括 TYPE_EMPTY)。实际上,该代码属于他的第一个截图,那里只有4列。 - Navneet Krishna

0

你试过用第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);
                }
            }

0
在您的Recycler View实现中,请尝试减小行高,与redbus相比,您的行高几乎是两倍。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接