Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 公交车座位安排与安卓RedBus相同_Android_Android Recyclerview - Fatal编程技术网

Android 公交车座位安排与安卓RedBus相同

Android 公交车座位安排与安卓RedBus相同,android,android-recyclerview,Android,Android Recyclerview,我正在尝试实现一个公交车座位预订应用程序,它与RedBus应用程序非常相似。我无意中发现了那件衣服的座位安排,我被那件衣服打动了 我真的需要你的帮助来实现这一点。我尝试过使用“回收者”视图,但这并没有让我了解确切的布局 我已经尝试过使用recycler view,我的布局如下: 但是,redbud应用程序的实际屏幕截图如下: 我已经阅读了git中的一段代码 但是,使用上面的代码,我可以得到布局设计,但问题是,如果有41个座位,就说像这样,但是使用上面的git代码,屏幕上会显示33个座位

我正在尝试实现一个公交车座位预订应用程序,它与RedBus应用程序非常相似。我无意中发现了那件衣服的座位安排,我被那件衣服打动了

我真的需要你的帮助来实现这一点。我尝试过使用“回收者”视图,但这并没有让我了解确切的布局

我已经尝试过使用recycler view,我的布局如下:

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

我已经阅读了git中的一段代码

但是,使用上面的代码,我可以得到布局设计,但问题是,如果有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);
                }
            }
numOfColumns=4;
mArrayBusSeats=新ArrayList();
对于(int i=0;i
您是否尝试过使用第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);
                }
            }
numOfColumns=5;
mArrayBusSeats=新ArrayList();
对于(int i=0;i
在您的回收器视图实现中,尝试降低行高,与redbus相比,您的行高几乎是redbus的两倍。

在您的示例中,您的
recyclerview
有3种
视图类型
s-
类型边、类型中心、类型空
即,座椅有3种类型。就像你的问题一样

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


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

嗯,但是,只有8*5=40,最后的座位在哪里,因为他说是41(但我同意你关于空位是
viewType=TYPE\u empty
)的想法我不太明白你的问题,但让我解释一下-如果
mArraySeats.size()
是41,它将只提供最多41个席位,因此剩余的席位将不会被填补
mArraySeats.size()=41
,如Op在问题中所述。我的意思是,包括他的截图中的空白,屏幕上只有40个座位。这个截图显然不属于
numOfColumns=4的给定代码因为它有5列(包括
类型\u EMPTY
)。事实上,这些代码属于他的第一个屏幕截图,其中只有4列