Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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
Java 如何在GridView中填充空单元格并使其不可循环_Java_Android_Gridview_Android Recyclerview - Fatal编程技术网

Java 如何在GridView中填充空单元格并使其不可循环

Java 如何在GridView中填充空单元格并使其不可循环,java,android,gridview,android-recyclerview,Java,Android,Gridview,Android Recyclerview,这是我的GridView代码 <GridView android:id="@+id/device_display_grid" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="100dp" android:numColumns="3" android:

这是我的GridView代码

    <GridView
        android:id="@+id/device_display_grid"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="100dp"
        android:numColumns="3"
        android:verticalSpacing="1dp"
        android:horizontalSpacing="1dp"
        android:background="#e5e5e5"/>

这就是我的GridView的外观

我的网格视图

我从数据库中获取数据,并使用该数据填充我的GridView。我的问题是如何使右下角的空白视图显示为白色背景。
我还需要使我的McClickListner在被点击时不做任何事情。假设我有两个空单元格,那么它们都应该被填充。

只需在数组的最后一个索引中添加一个额外的空对象即可

 var emptycell=0
    if(array.size % 3 == 1) {
        array.add(EmptyObject())
        array.add(EmptyObject())
        emptycell=2
    } else if (list % 3 == 2) {
        array.add(EmptyObject())
        emptycell=1
    }
当用户单击任意项目时,您可以检查单击的位置应低于array.size-emptycell,如下所示

if(position<array.size-emptycell){
//do whatever
}

if(位置接收适配器前使用:

if(list.size % 3 == 1) {
  list.add(YourModel())
  list.add(YourModel())
} else if (list % 3 == 2) {
  list.add(YourModel())
}
如果在适配器中使用RecyclerView:

//onBind
if(item.someField == null) {
  holder.cover.visibility = View.INVISIBLE
  holder.cover.visibility = View.INVISIBLE
}

//holder
fun setOnClickListener(item: YourModel) {
  if(item.someField == null) {
    vItem.setOnClickListener(null)
  } else {
    vItem.setOnClickListener(yourListener)
  }
}
它不是最佳实践,它只是快速的想法


另外,对不起Kotlin,我已经很久没有用Java写了

我的建议:不要用背景
#e5e5e5
,而是用
回收视图
网格布局管理器
项目装饰
白色背景