From a2d51cdc623d35e8e042cdf414197eae7a461db0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Viguera=20Mara=C3=B1=C3=B3n?= Date: Mon, 30 Dec 2019 12:02:40 +0100 Subject: [PATCH 1/9] Fix for issue #40: https://github.com/Cleveroad/AdaptiveTableLayout/issues/40 Clean up to avoid having to add 'tools:replace="android:allowBackup"' to element at AndroidManifest.xml when developers sets their own allowBackup value on their actual application --- library/src/main/AndroidManifest.xml | 9 ++------- library/src/main/res/values/strings.xml | 3 --- 2 files changed, 2 insertions(+), 10 deletions(-) delete mode 100644 library/src/main/res/values/strings.xml diff --git a/library/src/main/AndroidManifest.xml b/library/src/main/AndroidManifest.xml index 205d7c6..ff94558 100644 --- a/library/src/main/AndroidManifest.xml +++ b/library/src/main/AndroidManifest.xml @@ -1,9 +1,4 @@ - - - + + diff --git a/library/src/main/res/values/strings.xml b/library/src/main/res/values/strings.xml deleted file mode 100644 index 52abb56..0000000 --- a/library/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - AdaptiveTableLayout - From 3c77871b45fb9a164db981cf9a131b7f36a61abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Viguera=20Mara=C3=B1=C3=B3n?= Date: Mon, 30 Dec 2019 12:22:36 +0100 Subject: [PATCH 2/9] Fix for issue #38 Changing ViewHolder visibility to public in order to support Kotlin applications --- .../main/java/com/cleveroad/adaptivetablelayout/ViewHolder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolder.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolder.java index 9585771..2fb9b15 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolder.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolder.java @@ -6,7 +6,7 @@ /** * A {@link ViewHolder} describes an item view and metadata about its place within the {@link AdaptiveTableLayout}. */ -interface ViewHolder { +public interface ViewHolder { /** * @return item represents the item of the {@link AdaptiveTableLayout} */ From b84eb1e2fbec8b95a94013b9605b8a80750cc038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Viguera=20Mara=C3=B1=C3=B3n?= Date: Mon, 30 Dec 2019 12:44:55 +0100 Subject: [PATCH 3/9] Fix for issue #43 Refactor to Android X --- build.gradle | 2 +- gradle.properties | 4 +++- library/build.gradle | 4 ++-- .../AdaptiveTableAdapter.java | 4 ++-- .../adaptivetablelayout/AdaptiveTableLayout.java | 10 +++++----- .../DataAdaptiveTableLayoutAdapter.java | 2 +- .../adaptivetablelayout/LayoutDirection.java | 2 +- .../LinkedAdaptiveTableAdapter.java | 4 ++-- .../LinkedAdaptiveTableAdapterImpl.java | 4 ++-- .../cleveroad/adaptivetablelayout/Recycler.java | 4 ++-- .../adaptivetablelayout/ScrollHelper.java | 4 ++-- .../adaptivetablelayout/ScrollType.java | 2 +- .../adaptivetablelayout/ShadowHelper.java | 4 ++-- .../adaptivetablelayout/SparseMatrix.java | 6 +++--- .../adaptivetablelayout/ViewHolder.java | 2 +- .../adaptivetablelayout/ViewHolderImpl.java | 2 +- .../adaptivetablelayout/ViewHolderType.java | 2 +- sample/build.gradle | 10 +++++----- .../sample/adapter/SampleLinkedTableAdapter.java | 6 +++--- .../sample/datasource/CsvFileDataSourceImpl.java | 6 +++--- .../sample/datasource/UpdateCsvFileLoader.java | 2 +- .../sample/provider/DocumentsProvider.java | 4 ++-- .../cleveroad/sample/ui/CsvPickerFragment.java | 6 +++--- .../com/cleveroad/sample/ui/SampleActivity.java | 2 +- .../cleveroad/sample/ui/TableLayoutFragment.java | 13 +++++++------ .../sample/ui/dialogs/AddColumnDialog.java | 8 ++++---- .../sample/ui/dialogs/AddRowDialog.java | 6 +++--- .../sample/ui/dialogs/DeleteDialog.java | 6 +++--- .../sample/ui/dialogs/EditItemDialog.java | 12 ++++++------ .../sample/ui/dialogs/SettingsDialog.java | 10 +++++----- .../cleveroad/sample/utils/PermissionHelper.java | 8 ++++---- sample/src/main/res/layout/dialog_add_column.xml | 10 +++++----- sample/src/main/res/layout/dialog_add_row.xml | 10 +++++----- sample/src/main/res/layout/dialog_delete.xml | 8 ++++---- sample/src/main/res/layout/dialog_edit_item.xml | 14 +++++++------- sample/src/main/res/layout/dialog_edit_row.xml | 12 ++++++------ sample/src/main/res/layout/dialog_settings.xml | 16 ++++++++-------- .../src/main/res/layout/fragment_csv_picker.xml | 4 ++-- .../src/main/res/layout/fragment_tab_layout.xml | 2 +- sample/src/main/res/layout/item_body.xml | 4 ++-- 40 files changed, 122 insertions(+), 119 deletions(-) diff --git a/build.gradle b/build.gradle index 6303ad5..1fcb2cc 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ buildscript { ext.gradle_tools_version = '3.2.0' - ext.support_version = '28.0.0' + ext.support_version = '1.1.0' ext.glide_version = '4.7.1' repositories { diff --git a/gradle.properties b/gradle.properties index 320913e..b0571e4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -30,4 +30,6 @@ POM_LICENCE_URL=http://opensource.org/licenses/MIT POM_LICENCE_DIST=repo POM_DEVELOPER_ID=cleveroad -POM_DEVELOPER_NAME=Cleveroad \ No newline at end of file +POM_DEVELOPER_NAME=Cleveroad +android.useAndroidX=true +android.enableJetifier=true \ No newline at end of file diff --git a/library/build.gradle b/library/build.gradle index 5384276..72740d3 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -8,7 +8,7 @@ android { targetSdkVersion 28 versionCode 8 versionName "1.2.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -21,6 +21,6 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation "com.android.support:appcompat-v7:$support_version" + implementation "androidx.appcompat:appcompat:$support_version" } //apply from: 'gradle-mvn-push.gradle' diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableAdapter.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableAdapter.java index e3d6e4a..71215ed 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableAdapter.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableAdapter.java @@ -1,7 +1,7 @@ package com.cleveroad.adaptivetablelayout; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.view.ViewGroup; /** diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java index deb84d4..41a45df 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java @@ -10,11 +10,11 @@ import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; -import android.support.v4.util.SparseArrayCompat; -import android.support.v4.view.ViewCompat; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; +import androidx.collection.SparseArrayCompat; +import androidx.core.view.ViewCompat; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/DataAdaptiveTableLayoutAdapter.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/DataAdaptiveTableLayoutAdapter.java index 201baec..ed36145 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/DataAdaptiveTableLayoutAdapter.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/DataAdaptiveTableLayoutAdapter.java @@ -1,7 +1,7 @@ package com.cleveroad.adaptivetablelayout; import android.os.Bundle; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; interface DataAdaptiveTableLayoutAdapter extends AdaptiveTableAdapter { /** diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/LayoutDirection.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/LayoutDirection.java index b4c8a3a..51c6843 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/LayoutDirection.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/LayoutDirection.java @@ -1,6 +1,6 @@ package com.cleveroad.adaptivetablelayout; -import android.support.annotation.IntDef; +import androidx.annotation.IntDef; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/LinkedAdaptiveTableAdapter.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/LinkedAdaptiveTableAdapter.java index b663302..5035411 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/LinkedAdaptiveTableAdapter.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/LinkedAdaptiveTableAdapter.java @@ -1,7 +1,7 @@ package com.cleveroad.adaptivetablelayout; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import java.util.ArrayList; import java.util.List; diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/LinkedAdaptiveTableAdapterImpl.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/LinkedAdaptiveTableAdapterImpl.java index 5b35f37..262c6b2 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/LinkedAdaptiveTableAdapterImpl.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/LinkedAdaptiveTableAdapterImpl.java @@ -2,8 +2,8 @@ import android.annotation.SuppressLint; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.view.ViewGroup; import java.util.HashMap; diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/Recycler.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/Recycler.java index e551978..1f18b4d 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/Recycler.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/Recycler.java @@ -1,7 +1,7 @@ package com.cleveroad.adaptivetablelayout; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.util.SparseArray; import java.util.ArrayDeque; diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/ScrollHelper.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/ScrollHelper.java index dd06b9f..4e3d99e 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/ScrollHelper.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/ScrollHelper.java @@ -1,8 +1,8 @@ package com.cleveroad.adaptivetablelayout; import android.content.Context; -import android.support.annotation.Nullable; -import android.support.v4.view.GestureDetectorCompat; +import androidx.annotation.Nullable; +import androidx.core.view.GestureDetectorCompat; import android.view.GestureDetector; import android.view.MotionEvent; diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/ScrollType.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/ScrollType.java index e56233c..16dacc7 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/ScrollType.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/ScrollType.java @@ -1,6 +1,6 @@ package com.cleveroad.adaptivetablelayout; -import android.support.annotation.IntDef; +import androidx.annotation.IntDef; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/ShadowHelper.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/ShadowHelper.java index 9e9bd7e..0c50deb 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/ShadowHelper.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/ShadowHelper.java @@ -1,7 +1,7 @@ package com.cleveroad.adaptivetablelayout; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.view.View; import android.view.ViewGroup; diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/SparseMatrix.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/SparseMatrix.java index 365a7f1..998a99d 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/SparseMatrix.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/SparseMatrix.java @@ -1,8 +1,8 @@ package com.cleveroad.adaptivetablelayout; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.util.SparseArrayCompat; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.collection.SparseArrayCompat; import java.util.Collection; import java.util.LinkedList; diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolder.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolder.java index 2fb9b15..6ff456a 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolder.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolder.java @@ -1,6 +1,6 @@ package com.cleveroad.adaptivetablelayout; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.view.View; /** diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolderImpl.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolderImpl.java index 9b7c477..54c1b79 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolderImpl.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolderImpl.java @@ -1,6 +1,6 @@ package com.cleveroad.adaptivetablelayout; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.view.View; /** diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolderType.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolderType.java index 7e1b0c7..841e8cc 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolderType.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/ViewHolderType.java @@ -1,6 +1,6 @@ package com.cleveroad.adaptivetablelayout; -import android.support.annotation.IntDef; +import androidx.annotation.IntDef; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/sample/build.gradle b/sample/build.gradle index ea63a7e..14ac3ec 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -8,7 +8,7 @@ android { targetSdkVersion 28 versionCode 8 versionName "1.2.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { @@ -20,10 +20,10 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation "com.android.support:appcompat-v7:$support_version" - implementation "com.android.support:cardview-v7:$support_version" - implementation "com.android.support:support-v4:$support_version" - implementation "com.android.support:design:$support_version" + implementation "androidx.appcompat:appcompat:$support_version" + implementation 'androidx.cardview:cardview:1.0.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'com.google.android.material:material:1.0.0' // compile 'com.facebook.android:facebook-android-sdk:4.24.0' //Glide diff --git a/sample/src/main/java/com/cleveroad/sample/adapter/SampleLinkedTableAdapter.java b/sample/src/main/java/com/cleveroad/sample/adapter/SampleLinkedTableAdapter.java index c07c097..d2ec891 100644 --- a/sample/src/main/java/com/cleveroad/sample/adapter/SampleLinkedTableAdapter.java +++ b/sample/src/main/java/com/cleveroad/sample/adapter/SampleLinkedTableAdapter.java @@ -4,9 +4,9 @@ import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.graphics.ColorUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.graphics.ColorUtils; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; diff --git a/sample/src/main/java/com/cleveroad/sample/datasource/CsvFileDataSourceImpl.java b/sample/src/main/java/com/cleveroad/sample/datasource/CsvFileDataSourceImpl.java index bc14929..910f630 100644 --- a/sample/src/main/java/com/cleveroad/sample/datasource/CsvFileDataSourceImpl.java +++ b/sample/src/main/java/com/cleveroad/sample/datasource/CsvFileDataSourceImpl.java @@ -4,9 +4,9 @@ import android.content.Context; import android.net.Uri; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.LoaderManager; -import android.support.v4.content.Loader; +import androidx.annotation.NonNull; +import androidx.loader.app.LoaderManager; +import androidx.loader.content.Loader; import android.text.TextUtils; import android.util.Log; import android.util.SparseArray; diff --git a/sample/src/main/java/com/cleveroad/sample/datasource/UpdateCsvFileLoader.java b/sample/src/main/java/com/cleveroad/sample/datasource/UpdateCsvFileLoader.java index 5d19d35..70fd0d6 100644 --- a/sample/src/main/java/com/cleveroad/sample/datasource/UpdateCsvFileLoader.java +++ b/sample/src/main/java/com/cleveroad/sample/datasource/UpdateCsvFileLoader.java @@ -2,7 +2,7 @@ import android.content.Context; import android.os.Environment; -import android.support.v4.content.AsyncTaskLoader; +import androidx.loader.content.AsyncTaskLoader; import android.util.Log; import com.cleveroad.sample.utils.ClosableUtil; diff --git a/sample/src/main/java/com/cleveroad/sample/provider/DocumentsProvider.java b/sample/src/main/java/com/cleveroad/sample/provider/DocumentsProvider.java index 7f72c12..be61103 100644 --- a/sample/src/main/java/com/cleveroad/sample/provider/DocumentsProvider.java +++ b/sample/src/main/java/com/cleveroad/sample/provider/DocumentsProvider.java @@ -10,8 +10,8 @@ import android.os.StrictMode; import android.provider.DocumentsContract; import android.provider.MediaStore; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.cleveroad.sample.SampleApplication; diff --git a/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java b/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java index 71023f3..709de53 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java @@ -9,9 +9,9 @@ import android.os.Build; import android.os.Bundle; import android.os.Environment; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; import android.text.SpannableString; import android.text.Spanned; import android.text.TextPaint; diff --git a/sample/src/main/java/com/cleveroad/sample/ui/SampleActivity.java b/sample/src/main/java/com/cleveroad/sample/ui/SampleActivity.java index d3baa52..81d3a20 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/SampleActivity.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/SampleActivity.java @@ -1,7 +1,7 @@ package com.cleveroad.sample.ui; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.widget.Toast; import com.cleveroad.sample.R; diff --git a/sample/src/main/java/com/cleveroad/sample/ui/TableLayoutFragment.java b/sample/src/main/java/com/cleveroad/sample/ui/TableLayoutFragment.java index e052f1b..db4c504 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/TableLayoutFragment.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/TableLayoutFragment.java @@ -6,11 +6,6 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; -import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.LayoutInflater; import android.view.MenuItem; @@ -19,6 +14,11 @@ import android.widget.ProgressBar; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.Toolbar; +import androidx.fragment.app.Fragment; + import com.cleveroad.adaptivetablelayout.AdaptiveTableLayout; import com.cleveroad.adaptivetablelayout.LinkedAdaptiveTableAdapter; import com.cleveroad.adaptivetablelayout.OnItemClickListener; @@ -33,6 +33,7 @@ import com.cleveroad.sample.ui.dialogs.EditItemDialog; import com.cleveroad.sample.ui.dialogs.SettingsDialog; import com.cleveroad.sample.utils.PermissionHelper; +import com.google.android.material.snackbar.Snackbar; import java.util.Objects; @@ -140,7 +141,7 @@ public boolean onMenuItemClick(MenuItem item) { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mSnackbar = Snackbar.make(view, R.string.changes_saved, Snackbar.LENGTH_INDEFINITE); - TextView tv = mSnackbar.getView().findViewById(android.support.design.R.id.snackbar_text); + TextView tv = mSnackbar.getView().findViewById(R.id.snackbar_text); tv.setMaxLines(3); mSnackbar.setAction("Close", new View.OnClickListener() { @Override diff --git a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/AddColumnDialog.java b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/AddColumnDialog.java index 728a72d..e506391 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/AddColumnDialog.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/AddColumnDialog.java @@ -4,10 +4,10 @@ import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/AddRowDialog.java b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/AddRowDialog.java index 189da60..038d716 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/AddRowDialog.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/AddRowDialog.java @@ -4,9 +4,9 @@ import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/DeleteDialog.java b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/DeleteDialog.java index 940264f..d81b867 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/DeleteDialog.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/DeleteDialog.java @@ -4,9 +4,9 @@ import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/EditItemDialog.java b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/EditItemDialog.java index 84161f4..12f073a 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/EditItemDialog.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/EditItemDialog.java @@ -5,12 +5,12 @@ import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.TextInputEditText; -import android.support.design.widget.TextInputLayout; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.textfield.TextInputEditText; +import com.google.android.material.textfield.TextInputLayout; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; diff --git a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/SettingsDialog.java b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/SettingsDialog.java index 9dd0bc2..0f2cec0 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/SettingsDialog.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/SettingsDialog.java @@ -5,11 +5,11 @@ import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; -import android.support.v7.widget.SwitchCompat; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.appcompat.widget.SwitchCompat; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; diff --git a/sample/src/main/java/com/cleveroad/sample/utils/PermissionHelper.java b/sample/src/main/java/com/cleveroad/sample/utils/PermissionHelper.java index 093803d..fc187e2 100644 --- a/sample/src/main/java/com/cleveroad/sample/utils/PermissionHelper.java +++ b/sample/src/main/java/com/cleveroad/sample/utils/PermissionHelper.java @@ -3,10 +3,10 @@ import android.app.Activity; import android.content.Context; import android.content.pm.PackageManager; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.Fragment; -import android.support.v4.content.ContextCompat; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.fragment.app.Fragment; +import androidx.core.content.ContextCompat; public class PermissionHelper { private PermissionHelper() { diff --git a/sample/src/main/res/layout/dialog_add_column.xml b/sample/src/main/res/layout/dialog_add_column.xml index 136119f..031c46d 100644 --- a/sample/src/main/res/layout/dialog_add_column.xml +++ b/sample/src/main/res/layout/dialog_add_column.xml @@ -1,5 +1,5 @@ - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/sample/src/main/res/layout/dialog_add_row.xml b/sample/src/main/res/layout/dialog_add_row.xml index d582066..d7661f2 100644 --- a/sample/src/main/res/layout/dialog_add_row.xml +++ b/sample/src/main/res/layout/dialog_add_row.xml @@ -1,5 +1,5 @@ - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/sample/src/main/res/layout/dialog_delete.xml b/sample/src/main/res/layout/dialog_delete.xml index 8b029e0..5366175 100644 --- a/sample/src/main/res/layout/dialog_delete.xml +++ b/sample/src/main/res/layout/dialog_delete.xml @@ -1,5 +1,5 @@ - - - - \ No newline at end of file + \ No newline at end of file diff --git a/sample/src/main/res/layout/dialog_edit_item.xml b/sample/src/main/res/layout/dialog_edit_item.xml index 61b3b70..723fae9 100644 --- a/sample/src/main/res/layout/dialog_edit_item.xml +++ b/sample/src/main/res/layout/dialog_edit_item.xml @@ -1,5 +1,5 @@ - - - - + - - - + diff --git a/sample/src/main/res/layout/dialog_edit_row.xml b/sample/src/main/res/layout/dialog_edit_row.xml index b16f0db..169457d 100644 --- a/sample/src/main/res/layout/dialog_edit_row.xml +++ b/sample/src/main/res/layout/dialog_edit_row.xml @@ -1,5 +1,5 @@ - - - + - - - + diff --git a/sample/src/main/res/layout/dialog_settings.xml b/sample/src/main/res/layout/dialog_settings.xml index e91699b..261c53a 100644 --- a/sample/src/main/res/layout/dialog_settings.xml +++ b/sample/src/main/res/layout/dialog_settings.xml @@ -1,5 +1,5 @@ - - - - - - - - + diff --git a/sample/src/main/res/layout/fragment_csv_picker.xml b/sample/src/main/res/layout/fragment_csv_picker.xml index 79cbe84..675b880 100644 --- a/sample/src/main/res/layout/fragment_csv_picker.xml +++ b/sample/src/main/res/layout/fragment_csv_picker.xml @@ -5,7 +5,7 @@ android:layout_height="match_parent" android:background="@color/medium_jungle_green"> - - - - - + From ac021d7b1c8bfc79766961250e9d26855edc4e4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Viguera=20Mara=C3=B1=C3=B3n?= Date: Mon, 30 Dec 2019 12:48:03 +0100 Subject: [PATCH 4/9] Fix for issue #42 Update to Api Level 29 --- sample/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sample/build.gradle b/sample/build.gradle index 14ac3ec..656545b 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 28 + compileSdkVersion 29 defaultConfig { applicationId "com.cleveroad.tablelayout" minSdkVersion 16 - targetSdkVersion 28 + targetSdkVersion 29 versionCode 8 versionName "1.2.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" From 9827f4d9dcbc51dbd2de64301649fb2799660924 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Viguera=20Mara=C3=B1=C3=B3n?= Date: Mon, 30 Dec 2019 17:33:51 +0100 Subject: [PATCH 5/9] Adapted sample to Api Level 29 Files will be saved to app's internal directory only --- .../sample/datasource/UpdateCsvFileLoader.java | 14 ++++++++------ .../com/cleveroad/sample/ui/CsvPickerFragment.java | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/sample/src/main/java/com/cleveroad/sample/datasource/UpdateCsvFileLoader.java b/sample/src/main/java/com/cleveroad/sample/datasource/UpdateCsvFileLoader.java index 70fd0d6..59ae51f 100644 --- a/sample/src/main/java/com/cleveroad/sample/datasource/UpdateCsvFileLoader.java +++ b/sample/src/main/java/com/cleveroad/sample/datasource/UpdateCsvFileLoader.java @@ -1,10 +1,10 @@ package com.cleveroad.sample.datasource; import android.content.Context; -import android.os.Environment; -import androidx.loader.content.AsyncTaskLoader; import android.util.Log; +import androidx.loader.content.AsyncTaskLoader; + import com.cleveroad.sample.utils.ClosableUtil; import com.cleveroad.sample.utils.StringUtils; @@ -104,6 +104,7 @@ private String saveChange() { final String originalFilePath = mCsvFileDataSource.getCsvFileUri().getEncodedPath(); File originalFile = new File(originalFilePath); + File originalFileDir = originalFile.getParentFile(); final String originalFileName = originalFile.getName(); final String newFilePath; @@ -128,7 +129,7 @@ private String saveChange() { newFileName = originalFileName.replace(CSV, TEMP_CSV); } - changedFile = new File(Environment.getExternalStorageDirectory(), newFileName); + changedFile = new File(originalFileDir, newFileName); try { changedFile.createNewFile(); } catch (IOException e1) { @@ -200,6 +201,7 @@ private String applyChanges() { final String originalFilePath = mCsvFileDataSource.getCsvFileUri().getEncodedPath(); File originalFile = new File(originalFilePath); + File originalFileDir = originalFile.getParentFile(); final String originalFileName = originalFile.getName(); final String newFilePath; @@ -224,7 +226,7 @@ private String applyChanges() { } else { newFileName = originalFileName.replace(CSV, TEMP_CSV); } - changedFile = new File(Environment.getExternalStorageDirectory(), newFileName); + changedFile = new File(originalFileDir, newFileName); try { changedFile.createNewFile(); } catch (IOException e1) { @@ -345,9 +347,9 @@ private String deleteRow(File changedFile) { writer.write(NEW_LINE); } else { // include an empty line if you deleted the last line - if (row != null && mCsvFileDataSource.getRowsCount() == 2){ + if (row != null && mCsvFileDataSource.getRowsCount() == 2) { StringBuilder emptyRow = new StringBuilder(); - for(int j = 0; j < row.size() - 1; j++){ + for (int j = 0; j < row.size() - 1; j++) { emptyRow.append(SEPARATOR); } writer.write(emptyRow.toString()); diff --git a/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java b/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java index 709de53..cc58645 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java @@ -171,7 +171,7 @@ private void createDemoFile() { public File createDemoTempFile() { String tempFileName = "DEMO_table_layout_application.csv"; - return new File(Environment.getExternalStorageDirectory(), tempFileName); + return new File(requireContext().getFilesDir(), tempFileName); } interface OnCsvFileSelectedListener { From 13678b1c67cc29bef03626c02a68af2e613a62ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Viguera=20Mara=C3=B1=C3=B3n?= Date: Mon, 30 Dec 2019 17:44:28 +0100 Subject: [PATCH 6/9] Fix for issue #44 to make sample support API level 16 as it does the library --- .../sample/ui/CsvPickerFragment.java | 18 ++--- .../sample/ui/TableLayoutFragment.java | 65 ++++++++----------- .../sample/ui/dialogs/EditItemDialog.java | 22 +++---- .../sample/ui/dialogs/SettingsDialog.java | 20 +++--- 4 files changed, 52 insertions(+), 73 deletions(-) diff --git a/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java b/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java index cc58645..96bb1a4 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/CsvPickerFragment.java @@ -8,10 +8,6 @@ import android.graphics.Color; import android.os.Build; import android.os.Bundle; -import android.os.Environment; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; import android.text.SpannableString; import android.text.Spanned; import android.text.TextPaint; @@ -23,6 +19,10 @@ import android.view.ViewGroup; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + import com.cleveroad.sample.R; import com.cleveroad.sample.provider.DocumentsProvider; import com.cleveroad.sample.utils.FileUtils; @@ -31,7 +31,6 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.util.Objects; import static android.content.Intent.EXTRA_MIME_TYPES; @@ -71,7 +70,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat SpannableString ss = new SpannableString(getString(R.string.pick_csv_or_demo_file)); ClickableSpan clickableSpan = new ClickableSpan() { @Override - public void onClick(View textView) { + public void onClick(@NonNull View textView) { if (PermissionHelper.checkOrRequest(CsvPickerFragment.this, REQUEST_CODE_PERMISSION_READ_EXTERNAL_STORAGE_DEMO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { createDemoFile(); @@ -79,7 +78,7 @@ public void onClick(View textView) { } @Override - public void updateDrawState(TextPaint ds) { + public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); } @@ -148,10 +147,7 @@ private void createDemoFile() { File file = createDemoTempFile(); try { if (!file.exists() && file.createNewFile()) { - InputStream inputStream = null; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { - inputStream = Objects.requireNonNull(getContext()).getAssets().open("fifa100.csv"); - } + InputStream inputStream = requireContext().getAssets().open("fifa100.csv"); FileUtils.copy(inputStream, file); } } catch (IOException e) { diff --git a/sample/src/main/java/com/cleveroad/sample/ui/TableLayoutFragment.java b/sample/src/main/java/com/cleveroad/sample/ui/TableLayoutFragment.java index db4c504..18f5c8e 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/TableLayoutFragment.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/TableLayoutFragment.java @@ -18,6 +18,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; +import androidx.loader.app.LoaderManager; import com.cleveroad.adaptivetablelayout.AdaptiveTableLayout; import com.cleveroad.adaptivetablelayout.LinkedAdaptiveTableAdapter; @@ -35,8 +36,6 @@ import com.cleveroad.sample.utils.PermissionHelper; import com.google.android.material.snackbar.Snackbar; -import java.util.Objects; - import static com.cleveroad.sample.datasource.Constants.ADD_COLUMN; import static com.cleveroad.sample.datasource.Constants.ADD_ROW; import static com.cleveroad.sample.datasource.Constants.DELETE_COLUMN; @@ -88,9 +87,7 @@ public static TableLayoutFragment newInstance(@NonNull String filename) { public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - mCsvFile = Uri.parse(Objects.requireNonNull(getArguments()).getString(EXTRA_CSV_FILE)); - } + mCsvFile = Uri.parse(requireArguments().getString(EXTRA_CSV_FILE)); mCsvFileDataSource = new CsvFileDataSourceImpl(getContext(), mCsvFile); } @@ -107,9 +104,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - Objects.requireNonNull(getActivity()).onBackPressed(); - } + requireActivity().onBackPressed(); } }); toolbar.inflateMenu(R.menu.table_layout); @@ -152,39 +147,35 @@ public void onClick(View v) { } private void applyChanges() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - if (PermissionHelper.checkOrRequest( - Objects.requireNonNull(getActivity()), - REQUEST_EXTERNAL_STORAGE, - PERMISSIONS_STORAGE)) { - showProgress(); - mCsvFileDataSource.applyChanges( - getLoaderManager(), - mTableLayout.getLinkedAdapterRowsModifications(), - mTableLayout.getLinkedAdapterColumnsModifications(), - mTableLayout.isSolidRowHeader(), - TableLayoutFragment.this); - } + if (PermissionHelper.checkOrRequest( + requireActivity(), + REQUEST_EXTERNAL_STORAGE, + PERMISSIONS_STORAGE)) { + showProgress(); + mCsvFileDataSource.applyChanges( + LoaderManager.getInstance(this), + mTableLayout.getLinkedAdapterRowsModifications(), + mTableLayout.getLinkedAdapterColumnsModifications(), + mTableLayout.isSolidRowHeader(), + TableLayoutFragment.this); } } private void applyChanges(int actionChangeData, int position, boolean beforeOrAfter) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - if (PermissionHelper.checkOrRequest( - Objects.requireNonNull(getActivity()), - REQUEST_EXTERNAL_STORAGE, - PERMISSIONS_STORAGE)) { - showProgress(); - mCsvFileDataSource.applyChanges( - getLoaderManager(), - mTableLayout.getLinkedAdapterRowsModifications(), - mTableLayout.getLinkedAdapterColumnsModifications(), - mTableLayout.isSolidRowHeader(), - actionChangeData, - position, - beforeOrAfter, - TableLayoutFragment.this); - } + if (PermissionHelper.checkOrRequest( + requireActivity(), + REQUEST_EXTERNAL_STORAGE, + PERMISSIONS_STORAGE)) { + showProgress(); + mCsvFileDataSource.applyChanges( + LoaderManager.getInstance(this), + mTableLayout.getLinkedAdapterRowsModifications(), + mTableLayout.getLinkedAdapterColumnsModifications(), + mTableLayout.isSolidRowHeader(), + actionChangeData, + position, + beforeOrAfter, + TableLayoutFragment.this); } } diff --git a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/EditItemDialog.java b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/EditItemDialog.java index 12f073a..f36083c 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/EditItemDialog.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/EditItemDialog.java @@ -3,14 +3,7 @@ import android.app.Activity; import android.content.Intent; import android.graphics.drawable.ColorDrawable; -import android.os.Build; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import com.google.android.material.textfield.TextInputEditText; -import com.google.android.material.textfield.TextInputLayout; -import androidx.fragment.app.DialogFragment; -import androidx.fragment.app.Fragment; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; @@ -18,9 +11,14 @@ import android.view.Window; import android.widget.TextView; -import com.cleveroad.sample.R; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; -import java.util.Objects; +import com.cleveroad.sample.R; +import com.google.android.material.textfield.TextInputEditText; +import com.google.android.material.textfield.TextInputLayout; import static com.cleveroad.sample.datasource.Constants.EXTRA_COLUMN_NUMBER; import static com.cleveroad.sample.datasource.Constants.EXTRA_ROW_NUMBER; @@ -92,12 +90,10 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c @Override public void onResume() { super.onResume(); - Window window = getDialog().getWindow(); + Window window = requireDialog().getWindow(); if (window != null) { DisplayMetrics dm = new DisplayMetrics(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - Objects.requireNonNull(getActivity()).getWindowManager().getDefaultDisplay().getMetrics(dm); - } + requireActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); int height = dm.heightPixels; int width = dm.widthPixels; window.setLayout(width, height); diff --git a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/SettingsDialog.java b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/SettingsDialog.java index 0f2cec0..cb16a4a 100644 --- a/sample/src/main/java/com/cleveroad/sample/ui/dialogs/SettingsDialog.java +++ b/sample/src/main/java/com/cleveroad/sample/ui/dialogs/SettingsDialog.java @@ -3,13 +3,7 @@ import android.app.Activity; import android.content.Intent; import android.graphics.drawable.ColorDrawable; -import android.os.Build; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.DialogFragment; -import androidx.fragment.app.Fragment; -import androidx.appcompat.widget.SwitchCompat; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; @@ -17,9 +11,13 @@ import android.view.Window; import android.widget.CompoundButton; -import com.cleveroad.sample.R; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.SwitchCompat; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; -import java.util.Objects; +import com.cleveroad.sample.R; import static com.cleveroad.sample.datasource.Constants.REQUEST_CODE_SETTINGS; @@ -142,12 +140,10 @@ public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { @Override public void onResume() { super.onResume(); - Window window = getDialog().getWindow(); + Window window = requireDialog().getWindow(); if (window != null) { DisplayMetrics dm = new DisplayMetrics(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - Objects.requireNonNull(getActivity()).getWindowManager().getDefaultDisplay().getMetrics(dm); - } + requireActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); int height = dm.heightPixels; int width = dm.widthPixels; window.setLayout(width, height); From e7faf6737355569771bc747e7ff71c8ac05e5e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Viguera=20Mara=C3=B1=C3=B3n?= Date: Tue, 31 Dec 2019 11:36:20 +0100 Subject: [PATCH 7/9] Fix for issue #45 to allow tables with no data. --- .../AdaptiveTableLayout.java | 58 ++++++++++--------- .../AdaptiveTableManager.java | 6 ++ 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java index 41a45df..6315e3e 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java @@ -10,15 +10,16 @@ import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.collection.SparseArrayCompat; import androidx.core.view.ViewCompat; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; import java.util.ArrayList; import java.util.Collection; @@ -867,31 +868,36 @@ private void addViewHolders(Rect filledArea) { int topRow = mManager.getRowByYWithShift(filledArea.top, mSettings.getCellMargin()); int bottomRow = mManager.getRowByYWithShift(filledArea.bottom, mSettings.getCellMargin()); - for (int i = topRow; i <= bottomRow; i++) { - for (int j = leftColumn; j <= rightColumn; j++) { - // item view holders - ViewHolder viewHolder = mViewHolders.get(i, j); - if (viewHolder == null && mAdapter != null) { - addViewHolder(i, j, ViewHolderType.ITEM); - } - } + int columnCount = mManager.getColumnCount(); + if (columnCount > 0) { + if (mManager.getRowCount() > 0) { + for (int i = topRow; i <= bottomRow; i++) { + for (int j = leftColumn; j <= rightColumn; j++) { + // item view holders + ViewHolder viewHolder = mViewHolders.get(i, j); + if (viewHolder == null && mAdapter != null) { + addViewHolder(i, j, ViewHolderType.ITEM); + } + } - // row view headers holders - ViewHolder viewHolder = mHeaderRowViewHolders.get(i); - if (viewHolder == null && mAdapter != null) { - addViewHolder(i, isRTL() ? mManager.getColumnCount() : 0, ViewHolderType.ROW_HEADER); - } else if (viewHolder != null && mAdapter != null) { - refreshHeaderRowViewHolder(viewHolder); + // row view headers holders + ViewHolder viewHolder = mHeaderRowViewHolders.get(i); + if (viewHolder == null && mAdapter != null) { + addViewHolder(i, isRTL() ? columnCount : 0, ViewHolderType.ROW_HEADER); + } else if (viewHolder != null && mAdapter != null) { + refreshHeaderRowViewHolder(viewHolder); + } + } } - } - for (int i = leftColumn; i <= rightColumn; i++) { - // column view header holders - ViewHolder viewHolder = mHeaderColumnViewHolders.get(i); - if (viewHolder == null && mAdapter != null) { - addViewHolder(0, i, ViewHolderType.COLUMN_HEADER); - } else if (viewHolder != null && mAdapter != null) { - refreshHeaderColumnViewHolder(viewHolder); + for (int i = leftColumn; i <= rightColumn; i++) { + // column view header holders + ViewHolder viewHolder = mHeaderColumnViewHolders.get(i); + if (viewHolder == null && mAdapter != null) { + addViewHolder(0, i, ViewHolderType.COLUMN_HEADER); + } else if (viewHolder != null && mAdapter != null) { + refreshHeaderColumnViewHolder(viewHolder); + } } } diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableManager.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableManager.java index 138de99..cad8cc3 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableManager.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableManager.java @@ -54,6 +54,12 @@ void clear() { } void init(int rowCount, int columnCount) { + if (rowCount < 0) { + rowCount = 0; + } + if (columnCount < 0) { + columnCount = 0; + } // create objects mRowHeights = new int[rowCount]; mColumnWidths = new int[columnCount]; From fd656ff1dd9be57e797d17205af9ff906a64b50e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Viguera=20Mara=C3=B1=C3=B3n?= Date: Tue, 31 Dec 2019 12:36:00 +0100 Subject: [PATCH 8/9] Fix for notifyDataSetChanged method. Issue #36 --- .../adaptivetablelayout/AdaptiveTableLayout.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java index 6315e3e..7eeadb6 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java @@ -1643,12 +1643,8 @@ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float ve @Override public void notifyDataSetChanged() { - recycleViewHolders(true); - mVisibleArea.set(mState.getScrollX(), - mState.getScrollY(), - mState.getScrollX() + mSettings.getLayoutWidth(), - mState.getScrollY() + mSettings.getLayoutHeight()); - addViewHolders(mVisibleArea); + initItems(); + notifyLayoutChanged(); } @Override From 4a2c8661c7699363dc2c6fbf3a469d2fb910997e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Viguera=20Mara=C3=B1=C3=B3n?= Date: Tue, 14 Jan 2020 17:17:44 +0100 Subject: [PATCH 9/9] Fix for issue #47. Top left corner header is not refreshed when any of notify* methods are called --- .../adaptivetablelayout/AdaptiveTableLayout.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java index 7eeadb6..ce3d2e9 100644 --- a/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java +++ b/library/src/main/java/com/cleveroad/adaptivetablelayout/AdaptiveTableLayout.java @@ -821,6 +821,15 @@ private void recycleViewHolders(boolean isRecycleAll) { } removeKeys(headerKeysToRemove, mHeaderRowViewHolders); + + //top left header view holder + if (mLeftTopViewHolder != null) { + // recycle view holder + if (isRecycleAll) { + recycleViewHolder(mLeftTopViewHolder); + mLeftTopViewHolder = null; + } + } }