evrencoskun 的 TableView 无法隐藏没有 RowHeaderItems 的行

问题描述 投票:0回答:1

如果我尝试隐藏带有 evrencoskun 的

TableView
的行,但尚未调用
setRowHeadItems
(因为我的表没有行标签),那么我的应用程序就会崩溃:

FATAL EXCEPTION: main
Process: com.example.app, PID: 20150
java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
    at jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
    at jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
    at jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
    at java.util.Objects.checkIndex(Objects.java:359)
    at java.util.ArrayList.remove(ArrayList.java:511)
    at com.evrencoskun.tableview.adapter.recyclerview.AbstractRecyclerViewAdapter.deleteItem(AbstractRecyclerViewAdapter.java:99)
    at com.evrencoskun.tableview.adapter.AbstractTableAdapter.removeRow(AbstractTableAdapter.java:244)
    at com.evrencoskun.tableview.handler.VisibilityHandler.hideRow(VisibilityHandler.java:63)
    at com.evrencoskun.tableview.TableView.hideRow(TableView.java:618)
    ...

我已经检查过在崩溃之前该表已被赋予数据(包括我试图隐藏的行)。

android tableview
1个回答
0
投票

当行被删除时,我们最终会得到

removeRow
中的
AbstractTableAdapter
函数:

public void removeRow(int rowPosition) {
    this.mCellRecyclerViewAdapter.deleteItem(rowPosition);
    this.mRowHeaderRecyclerViewAdapter.deleteItem(rowPosition);
}

错误发生在第二行,因为备份

mRowHeaderRecyclerViewAdapter
的数据集是空的。

要解决此问题,您可以更改库以在删除相应的行标题之前检查是否存在行标题,或者简单地创建任意行标题,然后在 XML 中将其宽度设置为 0:

app:row_header_width="0dp"
© www.soinside.com 2019 - 2024. All rights reserved.