Skip to content

Commit e7faf67

Browse files
author
Rubén Viguera Marañón
committed
Fix for issue Cleveroad#45 to allow tables with no data.
1 parent 13678b1 commit e7faf67

File tree

2 files changed

+38
-26
lines changed

2 files changed

+38
-26
lines changed

library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,16 @@
1010
import android.os.Bundle;
1111
import android.os.Parcel;
1212
import android.os.Parcelable;
13+
import android.util.AttributeSet;
14+
import android.view.MotionEvent;
15+
import android.view.View;
16+
import android.view.ViewGroup;
17+
1318
import androidx.annotation.NonNull;
1419
import androidx.annotation.Nullable;
1520
import androidx.annotation.RequiresApi;
1621
import androidx.collection.SparseArrayCompat;
1722
import androidx.core.view.ViewCompat;
18-
import android.util.AttributeSet;
19-
import android.view.MotionEvent;
20-
import android.view.View;
21-
import android.view.ViewGroup;
2223

2324
import java.util.ArrayList;
2425
import java.util.Collection;
@@ -867,31 +868,36 @@ private void addViewHolders(Rect filledArea) {
867868
int topRow = mManager.getRowByYWithShift(filledArea.top, mSettings.getCellMargin());
868869
int bottomRow = mManager.getRowByYWithShift(filledArea.bottom, mSettings.getCellMargin());
869870

870-
for (int i = topRow; i <= bottomRow; i++) {
871-
for (int j = leftColumn; j <= rightColumn; j++) {
872-
// item view holders
873-
ViewHolder viewHolder = mViewHolders.get(i, j);
874-
if (viewHolder == null && mAdapter != null) {
875-
addViewHolder(i, j, ViewHolderType.ITEM);
876-
}
877-
}
871+
int columnCount = mManager.getColumnCount();
872+
if (columnCount > 0) {
873+
if (mManager.getRowCount() > 0) {
874+
for (int i = topRow; i <= bottomRow; i++) {
875+
for (int j = leftColumn; j <= rightColumn; j++) {
876+
// item view holders
877+
ViewHolder viewHolder = mViewHolders.get(i, j);
878+
if (viewHolder == null && mAdapter != null) {
879+
addViewHolder(i, j, ViewHolderType.ITEM);
880+
}
881+
}
878882

879-
// row view headers holders
880-
ViewHolder viewHolder = mHeaderRowViewHolders.get(i);
881-
if (viewHolder == null && mAdapter != null) {
882-
addViewHolder(i, isRTL() ? mManager.getColumnCount() : 0, ViewHolderType.ROW_HEADER);
883-
} else if (viewHolder != null && mAdapter != null) {
884-
refreshHeaderRowViewHolder(viewHolder);
883+
// row view headers holders
884+
ViewHolder viewHolder = mHeaderRowViewHolders.get(i);
885+
if (viewHolder == null && mAdapter != null) {
886+
addViewHolder(i, isRTL() ? columnCount : 0, ViewHolderType.ROW_HEADER);
887+
} else if (viewHolder != null && mAdapter != null) {
888+
refreshHeaderRowViewHolder(viewHolder);
889+
}
890+
}
885891
}
886-
}
887892

888-
for (int i = leftColumn; i <= rightColumn; i++) {
889-
// column view header holders
890-
ViewHolder viewHolder = mHeaderColumnViewHolders.get(i);
891-
if (viewHolder == null && mAdapter != null) {
892-
addViewHolder(0, i, ViewHolderType.COLUMN_HEADER);
893-
} else if (viewHolder != null && mAdapter != null) {
894-
refreshHeaderColumnViewHolder(viewHolder);
893+
for (int i = leftColumn; i <= rightColumn; i++) {
894+
// column view header holders
895+
ViewHolder viewHolder = mHeaderColumnViewHolders.get(i);
896+
if (viewHolder == null && mAdapter != null) {
897+
addViewHolder(0, i, ViewHolderType.COLUMN_HEADER);
898+
} else if (viewHolder != null && mAdapter != null) {
899+
refreshHeaderColumnViewHolder(viewHolder);
900+
}
895901
}
896902
}
897903

library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ void clear() {
5454
}
5555

5656
void init(int rowCount, int columnCount) {
57+
if (rowCount < 0) {
58+
rowCount = 0;
59+
}
60+
if (columnCount < 0) {
61+
columnCount = 0;
62+
}
5763
// create objects
5864
mRowHeights = new int[rowCount];
5965
mColumnWidths = new int[columnCount];

0 commit comments

Comments
 (0)