From d68aa86e891d9edd1200a7e15e09d6b7532899ab Mon Sep 17 00:00:00 2001 From: Krupal Date: Thu, 5 Jul 2018 16:30:27 +0530 Subject: [PATCH 01/23] Revert "Testing branch" --- .idea/misc.xml | 2 +- .../main/java/easyadapter/dc/com/easyadapter/MainActivity.kt | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index e1c6276..75a4b5c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -25,7 +25,7 @@ - + diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt b/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt index c076dc0..ee4f605 100644 --- a/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt @@ -122,10 +122,6 @@ class MainActivity : AppCompatActivity() { binding.spRecyclerView.enableAutoCompleteMode { easySpinner, text -> spinnerAdapter.performFilter(text, spinnerFilter) } - binding.spRecyclerView.setOnDropDownVisibilityListener { - if(it) - binding.spRecyclerView.setText("") - } } val filter = object : EasyAdapter.OnFilter { From 7e08e48497de044c194c83d8eeced4f8158bb9d0 Mon Sep 17 00:00:00 2001 From: hb Date: Fri, 13 Jul 2018 11:07:01 +0530 Subject: [PATCH 02/23] merge Conflicts: app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt --- .circleci/config.yml | 7 +++++-- .idea/caches/build_file_checksums.ser | Bin 580 -> 580 bytes app/build.gradle | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c5dd12d..fb5a826 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,7 +15,8 @@ jobs: # - image: circleci/postgres:9.4 working_directory: ~/repo - + docker: + - image: circleci/android:api-27-alpha environment: # Customize the JVM maximum heap limit JVM_OPTS: -Xmx3200m @@ -31,7 +32,9 @@ jobs: # fallback to using the latest cache if no exact match is found - v1-dependencies- - - run: gradle dependencies + - run: + name: Download Dependencies + command: ./gradlew androidDependencies - save_cache: paths: diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index fdf2708433a0d403cd09a491a8203b0ca8325bb4..90411ab69a3773703aac49f0c0718dccada4ed10 100644 GIT binary patch delta 33 pcmX@Ya)f2V43oA(<5_nnCSoNLW}AN6#(Bf4P5{L delta 33 pcmX@Ya)f2V43@f?T3j3FOlK5)>HFZnf3~;w%nUoTRSxTIDgf Date: Fri, 13 Jul 2018 11:31:55 +0530 Subject: [PATCH 03/23] merge Conflicts: app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index af66172..63c52d0 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ [![N|Solid](https://img.shields.io/badge/Android%20Arsenal-EasyAdapter-brightgreen.svg)](https://android-arsenal.com/details/1/6950) [![Download](https://api.bintray.com/packages/mkrupal09/EasyAdapter/EasyAdapter/images/download.svg) ](https://bintray.com/mkrupal09/EasyAdapter/EasyAdapter/_latestVersion) +[![Circle +CI](https://circleci.com/gh/mkrupal09/EasyAdapter.svg?style=svg)](https://circleci.com/gh/mkrupal09/EasyAdapter) - Reduce Boilerplate code to create adapter and holder. - you can filter adapter without coding much. From 95f0601ed2310648ffeaacb259b2656b79ddfe45 Mon Sep 17 00:00:00 2001 From: hb Date: Fri, 13 Jul 2018 11:38:00 +0530 Subject: [PATCH 04/23] merge Conflicts: app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt --- .circleci/config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fb5a826..e440d26 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -41,8 +41,7 @@ jobs: - ~/.gradle key: v1-dependencies-{{ checksum "build.gradle" }} - # run tests! - - run: gradle test + From 0cca4c157afd791649b9268d579bab4369ba8899 Mon Sep 17 00:00:00 2001 From: hb Date: Fri, 13 Jul 2018 11:53:30 +0530 Subject: [PATCH 05/23] merge Conflicts: app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt --- .../easyadapter/dc/com/easyadapter/CountryListActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/CountryListActivity.java b/app/src/main/java/easyadapter/dc/com/easyadapter/CountryListActivity.java index aa0f367..3e73ab6 100644 --- a/app/src/main/java/easyadapter/dc/com/easyadapter/CountryListActivity.java +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/CountryListActivity.java @@ -52,7 +52,7 @@ private void initCountryAdapter() { binding.autocompleteCountry.setAdapter(countryAdapter = new EasyArrayAdapter(this, R.layout.inflater_category_name, new EasyAdapter.OnFilter() { @Override public boolean onFilterApply(@Nullable Object filter, @NonNull Region model) { - return true; + return true;s } @Override From 2e1e6284cc7fbb630b08fa4383fda2c1193c76ce Mon Sep 17 00:00:00 2001 From: hb Date: Tue, 17 Jul 2018 15:19:28 +0530 Subject: [PATCH 06/23] Bug fixed. --- .idea/misc.xml | 2 +- .../com/easyadapter/CountryListActivity.java | 2 +- .../dc/com/library/EasyAdapter.java | 1 + .../dc/com/library/InstantSpinner.java | 96 ------------- .../dc/com/library/ObservableArrayList.java | 130 ------------------ 5 files changed, 3 insertions(+), 228 deletions(-) delete mode 100644 library/src/main/java/easyadapter/dc/com/library/InstantSpinner.java delete mode 100644 library/src/main/java/easyadapter/dc/com/library/ObservableArrayList.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 75a4b5c..e1c6276 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -25,7 +25,7 @@ - + diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/CountryListActivity.java b/app/src/main/java/easyadapter/dc/com/easyadapter/CountryListActivity.java index 3e73ab6..aa0f367 100644 --- a/app/src/main/java/easyadapter/dc/com/easyadapter/CountryListActivity.java +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/CountryListActivity.java @@ -52,7 +52,7 @@ private void initCountryAdapter() { binding.autocompleteCountry.setAdapter(countryAdapter = new EasyArrayAdapter(this, R.layout.inflater_category_name, new EasyAdapter.OnFilter() { @Override public boolean onFilterApply(@Nullable Object filter, @NonNull Region model) { - return true;s + return true; } @Override diff --git a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java index 53077cd..f4672cc 100644 --- a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java +++ b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java @@ -429,6 +429,7 @@ private class ProgressViewHolder extends EasyHolder { swipeView = v; startViewSize = 0; endViewSize = 0; + setEnableSwipeToDelete(v,0,0); } } diff --git a/library/src/main/java/easyadapter/dc/com/library/InstantSpinner.java b/library/src/main/java/easyadapter/dc/com/library/InstantSpinner.java deleted file mode 100644 index 6e25a72..0000000 --- a/library/src/main/java/easyadapter/dc/com/library/InstantSpinner.java +++ /dev/null @@ -1,96 +0,0 @@ -package easyadapter.dc.com.library; - -import android.content.Context; -import android.graphics.Rect; -import android.text.method.KeyListener; -import android.util.AttributeSet; -import android.view.View; -import android.widget.AdapterView; - -/** - * Created by HB on 9/7/18. - */ -public class InstantSpinner extends android.support.v7.widget.AppCompatAutoCompleteTextView { - - private KeyListener keyListener; - private EasyAutoComplete.OnItemCallback onItemCallback; - - public InstantSpinner(Context context) { - super(context); - init(); - } - - public InstantSpinner(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - public InstantSpinner(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(); - - } - - private void init() { - setThreshold(0); - keyListener = getKeyListener(); - makeEditable(false); - setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (getAdapter() != null) { - showDropDown(); - } - } - }); - - setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - onItemCallback.onItemCallback(position, InstantSpinner.this); - } - }); - } - - - @Override - public boolean enoughToFilter() { - return true; - } - - @Override - protected void onFocusChanged(boolean focused, int direction, - Rect previouslyFocusedRect) { - super.onFocusChanged(focused, direction, previouslyFocusedRect); - if (focused && getAdapter() != null) { - - performFiltering(getText(), 0); - post(new Runnable() { - @Override - public void run() { - showDropDown(); - } - }); - } - } - - private void makeEditable(boolean editable) { - if (editable) { - setCursorVisible(true); - setKeyListener(keyListener); - } else { - setKeyListener(null); - setCursorVisible(false); - setInputType(0); - } - } - - @Override - protected void performFiltering(CharSequence text, int keyCode) { - super.performFiltering("", keyCode); - } - - public void setItemSelectionCallback(EasyAutoComplete.OnItemCallback onItemCallback) { - this.onItemCallback = onItemCallback; - } -} diff --git a/library/src/main/java/easyadapter/dc/com/library/ObservableArrayList.java b/library/src/main/java/easyadapter/dc/com/library/ObservableArrayList.java deleted file mode 100644 index 3ff7676..0000000 --- a/library/src/main/java/easyadapter/dc/com/library/ObservableArrayList.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package easyadapter.dc.com.library; - -import android.databinding.ListChangeRegistry; -import android.databinding.ObservableList; - -import java.util.ArrayList; -import java.util.Collection; - -/** - * An {@link ObservableList} implementation using ArrayList as an implementation. - */ -public class ObservableArrayList extends ArrayList implements ObservableList { - private transient ListChangeRegistry mListeners = new ListChangeRegistry(); - - @Override - public void addOnListChangedCallback(OnListChangedCallback listener) { - if (mListeners == null) { - mListeners = new ListChangeRegistry(); - } - mListeners.add(listener); - } - - @Override - public void removeOnListChangedCallback(OnListChangedCallback listener) { - if (mListeners != null) { - mListeners.remove(listener); - } - } - - @Override - public boolean add(T object) { - super.add(object); - notifyAdd(size() - 1, 1); - return true; - } - - @Override - public void add(int index, T object) { - super.add(index, object); - notifyAdd(index, 1); - } - - @Override - public boolean addAll(Collection collection) { - int oldSize = size(); - boolean added = super.addAll(collection); - /*if (added) {*/ - notifyAdd(oldSize, size() - oldSize); - /*}*/ - return added; - } - - @Override - public boolean addAll(int index, Collection collection) { - boolean added = super.addAll(index, collection); - /*if (added) {*/ - notifyAdd(index, collection.size()); - /*}*/ - return added; - } - - @Override - public void clear() { - int oldSize = size(); - super.clear(); - /*if (oldSize != 0) {*/ - notifyRemove(0, oldSize); - /*}*/ - } - - @Override - public T remove(int index) { - T val = super.remove(index); - notifyRemove(index, 1); - return val; - } - - @Override - public boolean remove(Object object) { - int index = indexOf(object); - if (index >= 0) { - remove(index); - return true; - } else { - return false; - } - } - - @Override - public T set(int index, T object) { - T val = super.set(index, object); - if (mListeners != null) { - mListeners.notifyChanged(this, index, 1); - } - return val; - } - - @Override - protected void removeRange(int fromIndex, int toIndex) { - super.removeRange(fromIndex, toIndex); - notifyRemove(fromIndex, toIndex - fromIndex); - } - - private void notifyAdd(int start, int count) { - if (mListeners != null) { - mListeners.notifyInserted(this, start, count); - } - } - - private void notifyRemove(int start, int count) { - if (mListeners != null) { - mListeners.notifyRemoved(this, start, count); - } - } -} From c30dd37e7a11bbda5bf83e6d9c04fd1345357980 Mon Sep 17 00:00:00 2001 From: Krupal Date: Mon, 15 Oct 2018 14:25:49 +0530 Subject: [PATCH 07/23] Update README.md --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 63c52d0..69b877b 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ adapter = new EasyAdapter(R.layout.inflater_c binding.tvName.setText(model.name); } } + ``` ## Usage @@ -81,6 +82,17 @@ class CategoryAdapter() :EasyAdapter(R.layout } } ``` +###java +``` java + public CategoryAdapter() { + super(R.layout.inflater_category); + } + + @Override + public void onBind(@NonNull InflaterCategoryBinding binding, @NonNull Category model) { + binding.tvName.setText(model.name); + } +``` #### 1) To Handle recycler View item Events From 47b6a9c175bf1ba2d5ac71f5d8800b16d0c0a8fd Mon Sep 17 00:00:00 2001 From: hb Date: Thu, 18 Oct 2018 14:47:01 +0530 Subject: [PATCH 08/23] added addOnly() and removeOnly() method --- .idea/caches/build_file_checksums.ser | Bin 580 -> 580 bytes .idea/misc.xml | 2 +- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 2 +- .../com/easyadapter/CategoryAdapterJava.java | 20 +++++ .../dc/com/easyadapter/MainActivity.kt | 9 ++- .../dc/com/easyadapter/MainActivityJava.java | 23 ++++++ .../dc/com/easyadapter/TestActivity.java | 21 +++++ .../main/res/drawable/gradient_drawable.xml | 7 ++ app/src/main/res/layout/activity_main.xml | 37 ++++----- app/src/main/res/layout/activity_test.xml | 73 ++++++++++++++++++ app/src/main/res/layout/inflater_category.xml | 2 + library/build.gradle | 4 +- .../dc/com/library/EasyAdapter.java | 33 +++++--- 14 files changed, 201 insertions(+), 34 deletions(-) create mode 100644 app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapterJava.java create mode 100644 app/src/main/java/easyadapter/dc/com/easyadapter/MainActivityJava.java create mode 100644 app/src/main/java/easyadapter/dc/com/easyadapter/TestActivity.java create mode 100644 app/src/main/res/drawable/gradient_drawable.xml create mode 100644 app/src/main/res/layout/activity_test.xml diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 90411ab69a3773703aac49f0c0718dccada4ed10..d289ee90e6e8a459e2b34f3201745131356c9c55 100644 GIT binary patch delta 62 zcmV-E0Kxyn1jGc8mjz~qa=AdUoIC*&D@s~wWtmydtw7uaSD@MGbN~^Pi~$>y1_CV+ Ux=vkKJ6mbO)-IkZktz5}co85N>i_@% delta 62 zcmV-E0Kxyn1jGc8mjz^!9bVJ1oIC*&aoxBiQ;6V>0&n%_j=?i|bN~^Pi~$>y1_CV+ U7AF}t*+^-lRu%tyaX5RBcqSYeyZ`_I diff --git a/.idea/misc.xml b/.idea/misc.xml index e1c6276..75a4b5c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -25,7 +25,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0091b13..03e1a92 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" kapt 'com.android.databinding:compiler:3.1.2' implementation 'com.android.support:recyclerview-v7:27.1.1' - + implementation 'com.github.warkiz.widget:indicatorseekbar:2.1.0' implementation project(':library') /*implementation "com.github.mkrupal09:EasyAdapter:9be4f31"*/ /*implementation 'com.dc.easyadapter:easyadapter:1.2'*/ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08aa01f..9d5b031 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,7 +10,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapterJava.java b/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapterJava.java new file mode 100644 index 0000000..3ff335c --- /dev/null +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapterJava.java @@ -0,0 +1,20 @@ +package easyadapter.dc.com.easyadapter; + +import android.support.annotation.NonNull; + +import easyadapter.dc.com.easyadapter.databinding.InflaterCategoryBinding; +import easyadapter.dc.com.library.EasyAdapter; + +/** + * Created by HB on 1/10/18. + */ +public class CategoryAdapterJava extends EasyAdapter { + public CategoryAdapterJava() { + super(R.layout.inflater_category); + } + + @Override + public void onBind(@NonNull InflaterCategoryBinding binding, @NonNull Category model) { + binding.tvName.setText(model.getName()); + } +} diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt b/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt index e1d2b43..b9c8f92 100644 --- a/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt @@ -6,13 +6,16 @@ import android.support.v4.content.ContextCompat import android.support.v7.app.AppCompatActivity import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.SearchView +import android.util.Log import android.view.View +import android.webkit.WebView +import android.webkit.WebViewClient import android.widget.Toast import easyadapter.dc.com.easyadapter.databinding.ActivityMainBinding import easyadapter.dc.com.easyadapter.databinding.InflaterCategoryNameBinding import easyadapter.dc.com.library.EasyAdapter -import easyadapter.dc.com.library.EasySpinner import easyadapter.dc.com.library.EasyArrayAdapter +import easyadapter.dc.com.library.EasySpinner class MainActivity : AppCompatActivity() { @@ -56,12 +59,14 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + Log.d("MainActivityLog", "true"); binding = DataBindingUtil.setContentView(this, R.layout.activity_main) binding.recyclerView.isNestedScrollingEnabled = false adapterExample() spinnerExample() autocomplete() + } private fun autocomplete() { @@ -72,7 +77,7 @@ class MainActivity : AppCompatActivity() { } override fun onFilterApply(filter: Any?, model: Category): Boolean { - return if(filter!=null) model.parentId.equals("1") else false + return if (filter != null) model.parentId.equals("1") else false } }) { override fun onBind(binding: InflaterCategoryNameBinding, model: Category) { diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivityJava.java b/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivityJava.java new file mode 100644 index 0000000..4ee1643 --- /dev/null +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivityJava.java @@ -0,0 +1,23 @@ +package easyadapter.dc.com.easyadapter; + +import android.databinding.DataBindingUtil; +import android.databinding.ViewDataBinding; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.RecyclerView; + +import easyadapter.dc.com.library.EasyAdapter; + +/** + * Created by HB on 15/10/18. + */ +public class MainActivityJava extends AppCompatActivity { + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + } +} diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/TestActivity.java b/app/src/main/java/easyadapter/dc/com/easyadapter/TestActivity.java new file mode 100644 index 0000000..cdc2f60 --- /dev/null +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/TestActivity.java @@ -0,0 +1,21 @@ +package easyadapter.dc.com.easyadapter; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; + +/** + * Created by HB on 28/9/18. + */ +public class TestActivity extends AppCompatActivity { + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_test); + RecyclerView recyclerView = findViewById(R.id.recyclerView); + CategoryAdapter categoryAdapter = new CategoryAdapter(false); + recyclerView.setAdapter(categoryAdapter); + } +} diff --git a/app/src/main/res/drawable/gradient_drawable.xml b/app/src/main/res/drawable/gradient_drawable.xml new file mode 100644 index 0000000..2a5007a --- /dev/null +++ b/app/src/main/res/drawable/gradient_drawable.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5dbe5ec..414699f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -13,15 +13,6 @@ android:layout_height="match_parent" android:orientation="vertical"> - - - - + android:textColorHint="@android:color/black" + android:visibility="gone" /> + android:hint="Search Category" + android:paddingLeft="5dp" /> + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_test.xml b/app/src/main/res/layout/activity_test.xml new file mode 100644 index 0000000..e70c3bb --- /dev/null +++ b/app/src/main/res/layout/activity_test.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/inflater_category.xml b/app/src/main/res/layout/inflater_category.xml index da7c483..62e2aa7 100644 --- a/app/src/main/res/layout/inflater_category.xml +++ b/app/src/main/res/layout/inflater_category.xml @@ -48,6 +48,8 @@ diff --git a/library/build.gradle b/library/build.gradle index 50db24d..9148097 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -3,14 +3,14 @@ apply plugin: 'com.android.library' ext { PUBLISH_GROUP_ID = 'com.dc.easyadapter' PUBLISH_ARTIFACT_ID = 'easyadapter' - PUBLISH_VERSION = '2.0.3' + PUBLISH_VERSION = '2.0.5' } android { compileSdkVersion 27 defaultConfig { - minSdkVersion 16 + minSdkVersion 15 targetSdkVersion 27 versionCode 1 versionName "1.0" diff --git a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java index f4672cc..8c77feb 100644 --- a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java +++ b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java @@ -104,12 +104,6 @@ public void clear(boolean deepClean) { } } - public void remove(M model) { - data.remove(model); - temp.remove(model); - notifyDataSetChanged(); - } - private void clearFilter() { data.clear(); @@ -122,12 +116,34 @@ public void add(M model) { notifyDataSetChanged(); } + public int addOnly(M model) { + data.add(model); + temp.add(model); + return data.size() - 1; + /*notifyDataSetChanged();*/ + } + + + @Deprecated + public void remove(M model) { + data.remove(model); + temp.remove(model); + notifyDataSetChanged(); + } + + public void removeOnly(int pos) { + M model = data.get(pos); + data.remove(model); + temp.remove(model); + notifyDataSetChanged(); + } + public void addAll(List addAll, boolean deepCopy) { data.addAll(addAll); if (deepCopy) { temp.addAll(addAll); } - notifyDataSetChanged(); + /*notifyDataSetChanged();*/ } public EasyAdapter setRecyclerViewItemClick(OnRecyclerViewItemClick recyclerViewItemClick) { @@ -175,7 +191,6 @@ public void performFilter(Object text, OnFilter onFilter) { } - @Override public final EasyHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == VIEW_ITEM) { @@ -429,7 +444,7 @@ private class ProgressViewHolder extends EasyHolder { swipeView = v; startViewSize = 0; endViewSize = 0; - setEnableSwipeToDelete(v,0,0); + setEnableSwipeToDelete(v, 0, 0); } } From bb225f2718a61ac48950a9448e3b7daaba8a401c Mon Sep 17 00:00:00 2001 From: Krupal Date: Fri, 14 Dec 2018 18:31:58 +0530 Subject: [PATCH 09/23] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 69b877b..1a736b6 100644 --- a/README.md +++ b/README.md @@ -302,6 +302,10 @@ without this person cannot achieve swipe action in recyclerview https://android.jlelse.eu/android-tools-attributes-listitem-sample-data-rocks-bbf49aaa9f07
for sharing knowledge of Android Tools attributes +* Buy me a Beer. :beer: + + + License ======= From 5ce52e87f2386f912420f66048b5207879739e8f Mon Sep 17 00:00:00 2001 From: hb Date: Tue, 8 Jan 2019 16:12:48 +0530 Subject: [PATCH 10/23] added setTag() getTag() method for holder --- .idea/caches/build_file_checksums.ser | Bin 580 -> 580 bytes .idea/misc.xml | 2 +- app/build.gradle | 14 +- app/src/main/AndroidManifest.xml | 7 +- app/src/main/aidl/dc/krupal/ICallback.aidl | 27 + .../main/aidl/dc/krupal/IWoyouService.aidl | 202 +++++ .../dc/com/easyadapter/TransBean.aidl | 4 + .../dc/com/easyadapter/Category.kt | 1 + .../dc/com/easyadapter/CategoryAdapter.kt | 15 + .../dc/com/easyadapter/MainActivity.kt | 45 + .../dc/com/easyadapter/TransBean.java | 33 + .../dc/com/easyadapter/VideoActivity.java | 62 ++ app/src/main/res/layout/activity_video.xml | 22 + app/src/main/res/layout/inflater_category.xml | 2 +- .../dc/com/library/EasyAdapter.java | 816 +++++++++--------- 15 files changed, 844 insertions(+), 408 deletions(-) create mode 100644 app/src/main/aidl/dc/krupal/ICallback.aidl create mode 100644 app/src/main/aidl/dc/krupal/IWoyouService.aidl create mode 100644 app/src/main/aidl/easyadapter/dc/com/easyadapter/TransBean.aidl create mode 100644 app/src/main/java/easyadapter/dc/com/easyadapter/TransBean.java create mode 100644 app/src/main/java/easyadapter/dc/com/easyadapter/VideoActivity.java create mode 100644 app/src/main/res/layout/activity_video.xml diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index d289ee90e6e8a459e2b34f3201745131356c9c55..49ad73cae918a4e97cfaff7f87755916da6bcc4c 100644 GIT binary patch delta 34 scmV+-0Nww@1jGc8mj!4n`UCy3oR
- + diff --git a/app/build.gradle b/app/build.gradle index 03e1a92..dcfe5bb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,11 +3,11 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' android { - compileSdkVersion 27 + compileSdkVersion 28 defaultConfig { applicationId "easyadapter.dc.com.easyadapter" minSdkVersion 16 - targetSdkVersion 27 + targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" @@ -25,6 +25,10 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }*/ + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { @@ -39,9 +43,15 @@ dependencies { implementation 'com.android.support:recyclerview-v7:27.1.1' implementation 'com.github.warkiz.widget:indicatorseekbar:2.1.0' implementation project(':library') + + implementation 'com.github.bumptech.glide:glide:4.8.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0' /*implementation "com.github.mkrupal09:EasyAdapter:9be4f31"*/ /*implementation 'com.dc.easyadapter:easyadapter:1.2'*/ + implementation 'com.devbrackets.android:exomedia:4.3.0' + + } repositories { mavenCentral() diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9d5b031..c4f6809 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,8 @@ package="easyadapter.dc.com.easyadapter"> + + - + diff --git a/app/src/main/aidl/dc/krupal/ICallback.aidl b/app/src/main/aidl/dc/krupal/ICallback.aidl new file mode 100644 index 0000000..cf1591a --- /dev/null +++ b/app/src/main/aidl/dc/krupal/ICallback.aidl @@ -0,0 +1,27 @@ +// ICallback.aidl +package dc.krupal; + +/** + * Callback of print service execution results + */ +interface ICallback { + + /** + * Return execution result + * @param isSuccess: True execution succeeded, false execution failed + */ + oneway void onRunResult(boolean isSuccess); + + /** + *Return result (string data) + * @param result: As a result, the print length (in mm) since the printer was powered on + */ + oneway void onReturnString(String result); + + /** + * Execution exception + * Code: exception code + * Msg: exception description + */ + oneway void onRaiseException(int code, String msg); +} \ No newline at end of file diff --git a/app/src/main/aidl/dc/krupal/IWoyouService.aidl b/app/src/main/aidl/dc/krupal/IWoyouService.aidl new file mode 100644 index 0000000..0845eb1 --- /dev/null +++ b/app/src/main/aidl/dc/krupal/IWoyouService.aidl @@ -0,0 +1,202 @@ +// IWoyouService.aidl + +package dc.krupal; + +import dc.krupal.ICallback; +import android.graphics.Bitmap; +import easyadapter.dc.com.easyadapter.TransBean; + +interface IWoyouService +{ + + + /** + * Printer firmware upgrade (only for system component calls, developer calls are invalid) + * @param buffer + * @param size + * @param filename + * @param iapInterface + */ + void updateFirmware(); + + /** + * Printer firmware status + * return: 0--unknown, A5--bootloader, C3--print + */ + int getFirmwareStatus(); + + /** + * Take the WoyouService service version + */ + String getServiceVersion(); + + /** + * Initialize the printer, reset the printer's logic, but not clear the buffer data, so + * Incomplete print jobs will continue after reset + * @param callback + * @return + */ + void printerInit(in ICallback callback); + + /** + *The printer self-test, the printer will print a self-test page + * @param callback + */ + void printerSelfChecking(in ICallback callback); + + /** + * Get the printer board serial number + */ + String getPrinterSerialNo(); + + /** + * Get the printer firmware version number + */ + String getPrinterVersion(); + + /** + * Get the printer model + */ + String getPrinterModal(); + + /** + * Get printhead print length + */ + void getPrintedLength(in ICallback callback); + + /** + * The printer feeds paper (forced line feed, after the end of the print content, the paper is n lines) + * @param n: Number of lines + * @param callback Result callback + * @return + */ + void lineWrap(int n, in ICallback callback); + + /** + * Print using the original instructions + * @param data instruction + * @param callback Result callback + */ + void sendRAWData(in byte[] data, in ICallback callback); + + /** + * Set the alignment mode to have an effect on subsequent printing unless initialized + * @param alignment: Alignment 0--Left , 1--Centered, 2--Right + * @param callback 结果回调 + */ + void setAlignment(int alignment, in ICallback callback); + + /** + *Set the print font to have an effect on the print afterwards, unless initialized + *(Currently only one font "gh" is supported, gh is a monospaced Chinese font, and more font options will be provided later) + * @param typeface: Font name + */ + void setFontName(String typeface, in ICallback callback); + + /** + * Set the font size, which has an effect on printing afterwards, unless initialized + *Note: The font size is printed beyond the standard international directives. + * Adjusting the font size will affect the character width, and the number of characters per line will also change. + * Therefore, the layout formed by the monospaced font may be confusing. + * @param fontsize: font size + */ + void setFontSize(float fontsize, in ICallback callback); + + /** + * Print text, the text width is full of one line, and it is automatically wrapped and typeset. If it is not full, it will not print unless it is forced to wrap. + * @param text: The text string to be printed + */ + void printText(String text, in ICallback callback); + + /** + *Print the text of the specified font, the font setting is only valid for this time. + * @param text: To print text + * @param typeface: Font name (currently only supports "gh" font) + * @param fontsize: font size + */ + void printTextWithFont(String text, String typeface, float fontsize, in ICallback callback); + + /** + * Print a row of the table, you can specify the column width, alignment + * @param colsTextArr Array of text strings for each column + * @param colsWidthArr Array of column widths (in English characters, each Chinese character occupies two English characters, each width is greater than 0) + * @param colsAlign Alignment of columns (0 left, 1 center, 2 right) + * Remarks: The array length of the three parameters should be the same. If the width of colsText[i] is greater than colsWidth[i], the text is wrapped. + */ + void printColumnsText(in String[] colsTextArr, in int[] colsWidthArr, in int[] colsAlign, in ICallback callback); + + + /** + * Print picture + * @param bitmap: Image bitmap object (maximum width 384 pixels, more than unprintable and callback callback exception function) + */ + void printBitmap(in Bitmap bitmap, in ICallback callback); + + /** + * Print one-dimensional barcode + * @param data: Bar code data + * @param symbology: Barcode type + * 0 -- UPC-A + * 1 -- UPC-E + * 2 -- JAN13(EAN13) + * 3 -- JAN8(EAN8) + * 4 -- CODE39 + * 5 -- ITF + * 6 -- CODABAR + * 7 -- CODE93 + * 8 -- CODE128 + * @param height: Bar code height, Value 1 to 255, Default 162 + * @param width: Bar code width, Value 2 to 6, Default 2 + * @param textposition: Text position 0--Do not print text, 1--Text above the barcode, 2--Text below the barcode, 3--Both the top and bottom of the barcode are printed + */ + void printBarCode(String data, int symbology, int height, int width, int textposition, in ICallback callback); + + /** + * Print 2D barcode + * @param data: QR code data + * @param modulesize: Two-dimensional code block size (unit: point, value 1 to 16) + * @param errorlevel: QR code error correction level (0 to 3), + * 0 -- Error correction level L (7%), + * 1 -- Error correction level M (15%), + * 2 -- Error correction level Q (25%), + * 3 -- Error correction level H (30%) + */ + void printQRCode(String data, int modulesize, int errorlevel, in ICallback callback); + + /** + *Print text, the text width is full of one line, and it is automatically wrapped and typeset. If it is not full, it will not print unless it is forced to wrap. + * The text is output as it is in the width of the vector text, that is, each character is not equal in width + * @param text: The text string to be printed + * + */ + void printOriginalText(String text, in ICallback callback); + + /** + * Lib package transaction printing dedicated interface + * transbean Print task list + * Ver 1.8.0Increase + */ + void commitPrint(in TransBean[] transbean, in ICallback callback); + + /** + * Print buffer content + */ + void commitPrinterBuffer(); + + /** + * Enter buffer mode, all print calls will be cached, print after calling promisePrinterBuffe() + * + * @param clean: Whether to clear the buffer contents + * + */ + void enterPrinterBuffer(in boolean clean); + + /** + * Exit buffer mode + * + * @param commit: Whether to print out the contents of the buffer + * + */ + void exitPrinterBuffer(in boolean commit); + +} \ No newline at end of file diff --git a/app/src/main/aidl/easyadapter/dc/com/easyadapter/TransBean.aidl b/app/src/main/aidl/easyadapter/dc/com/easyadapter/TransBean.aidl new file mode 100644 index 0000000..e0bad9b --- /dev/null +++ b/app/src/main/aidl/easyadapter/dc/com/easyadapter/TransBean.aidl @@ -0,0 +1,4 @@ +// TransBean.aidl +package easyadapter.dc.com.easyadapter; + +parcelable TransBean; \ No newline at end of file diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/Category.kt b/app/src/main/java/easyadapter/dc/com/easyadapter/Category.kt index 1301de1..6ed8f86 100644 --- a/app/src/main/java/easyadapter/dc/com/easyadapter/Category.kt +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/Category.kt @@ -15,6 +15,7 @@ public class Category : Serializable { var parentId: String = "" var image: String = "" var isSelected: Boolean = false + companion object { val BUN_SEL_CATEGORY_LIST = "SEL_CATEGORY_LIST" const val SEND_OBJECT = "category" diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapter.kt b/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapter.kt index e219a4f..c597cbf 100644 --- a/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapter.kt +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapter.kt @@ -1,5 +1,7 @@ package easyadapter.dc.com.easyadapter +import android.widget.ImageView +import com.bumptech.glide.Glide import easyadapter.dc.com.easyadapter.databinding.InflaterCategoryBinding import easyadapter.dc.com.library.EasyAdapter @@ -19,6 +21,7 @@ class CategoryAdapter(val enableSwipToDelete: Boolean) : } } + } override fun onBind(binding: InflaterCategoryBinding, model: Category) { @@ -26,5 +29,17 @@ class CategoryAdapter(val enableSwipToDelete: Boolean) : tvName.text = model.name tvName.isSelected = model.isSelected } + binding.ivCategoryIcon.setImageResource(R.drawable.abc_ic_ab_back_material) + + + if (data.indexOf(model) % 2 == 0) { + binding.ivCategoryIcon.layoutParams.height = 100 + binding.ivCategoryIcon.scaleType = ImageView.ScaleType.FIT_CENTER + } else { + binding.ivCategoryIcon.layoutParams.height = 500 + binding.ivCategoryIcon.scaleType = ImageView.ScaleType.CENTER_CROP + } + + Glide.with(binding.ivCategoryIcon).load("https://www.healthywage.com/wp-content/uploads/2015/11/Kristin-W-BeforeAfter2-540x345.jpg").into(binding.ivCategoryIcon); } } \ No newline at end of file diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt b/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt index b9c8f92..0668f6a 100644 --- a/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/MainActivity.kt @@ -1,8 +1,13 @@ package easyadapter.dc.com.easyadapter +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter import android.databinding.DataBindingUtil import android.os.Bundle import android.support.v4.content.ContextCompat +import android.support.v4.content.LocalBroadcastManager import android.support.v7.app.AppCompatActivity import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.SearchView @@ -40,6 +45,32 @@ class MainActivity : AppCompatActivity() { temp.add(Category.createDummy("Darshak jani")) temp.add(Category.createDummy("Sanket Chauhan")) temp.add(Category.createDummy("Dhruv")) + temp.add(Category.createDummy("Krupal Mehta")) + temp.add(Category.createDummy("Aagam Mehta")) + temp.add(Category.createDummy("Anand Patel")) + temp.add(Category.createDummy("Sagar Panchal")) + temp.add(Category.createDummy("Pankaj Sharma")) + temp.add(Category.createDummy("Darshak jani")) + temp.add(Category.createDummy("Sanket Chauhan")) + temp.add(Category.createDummy("Dhruv")) + temp.add(Category.createDummy("Sagar Panchal")) + temp.add(Category.createDummy("Pankaj Sharma")) + temp.add(Category.createDummy("Darshak jani")) + temp.add(Category.createDummy("Sanket Chauhan")) + temp.add(Category.createDummy("Dhruv")) + temp.add(Category.createDummy("Krupal Mehta")) + temp.add(Category.createDummy("Aagam Mehta")) + temp.add(Category.createDummy("Anand Patel")) + temp.add(Category.createDummy("Sagar Panchal")) + temp.add(Category.createDummy("Pankaj Sharma")) + temp.add(Category.createDummy("Darshak jani")) + temp.add(Category.createDummy("Sanket Chauhan")) + temp.add(Category.createDummy("Dhruv")) + temp.add(Category.createDummy("Sagar Panchal")) + temp.add(Category.createDummy("Pankaj Sharma")) + temp.add(Category.createDummy("Darshak jani")) + temp.add(Category.createDummy("Sanket Chauhan")) + temp.add(Category.createDummy("Dhruv")) return temp } @@ -66,6 +97,7 @@ class MainActivity : AppCompatActivity() { adapterExample() spinnerExample() autocomplete() + test() } @@ -185,5 +217,18 @@ class MainActivity : AppCompatActivity() { spinnerAdapter.notifyDataSetChanged() } } + + private fun test() { + val intentFilter = IntentFilter() + intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED) + intentFilter.addAction(Intent.ACTION_PACKAGE_INSTALL) + intentFilter.addDataScheme("package") + LocalBroadcastManager.getInstance(this).registerReceiver(object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + Log.d("App Installed", "true") + } + }, intentFilter) + + } } diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/TransBean.java b/app/src/main/java/easyadapter/dc/com/easyadapter/TransBean.java new file mode 100644 index 0000000..b94218b --- /dev/null +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/TransBean.java @@ -0,0 +1,33 @@ +package easyadapter.dc.com.easyadapter; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Created by HB on 3/1/19. + */ +public class TransBean implements Parcelable { + protected TransBean(Parcel in) { + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public TransBean createFromParcel(Parcel in) { + return new TransBean(in); + } + + @Override + public TransBean[] newArray(int size) { + return new TransBean[size]; + } + }; +} diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/VideoActivity.java b/app/src/main/java/easyadapter/dc/com/easyadapter/VideoActivity.java new file mode 100644 index 0000000..04d560b --- /dev/null +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/VideoActivity.java @@ -0,0 +1,62 @@ +package easyadapter.dc.com.easyadapter; + +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.view.WindowInsets; +import android.view.WindowManager; + +import com.devbrackets.android.exomedia.core.video.scale.ScaleType; +import com.devbrackets.android.exomedia.listener.OnPreparedListener; +import com.devbrackets.android.exomedia.ui.widget.VideoView; +import com.google.android.exoplayer2.ExoPlayer; +import com.google.android.exoplayer2.SimpleExoPlayer; +import com.google.android.exoplayer2.source.ClippingMediaSource; +import com.google.android.exoplayer2.source.ExtractorMediaSource; +import com.google.android.exoplayer2.source.MediaPeriod; +import com.google.android.exoplayer2.source.MediaSource; + +/** + * Created by HB on 7/12/18. + */ +public class VideoActivity extends AppCompatActivity implements OnPreparedListener { + + VideoView videoView; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + + + + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); // or add true in the theme + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + + setContentView(R.layout.activity_video); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + WindowManager.LayoutParams attrib = getWindow().getAttributes(); + attrib.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; + } + + videoView = (VideoView) findViewById(R.id.video_view); + videoView.setOnPreparedListener(this); + + + + videoView.setScaleType(ScaleType.CENTER_CROP); + + //For now we just picked an arbitrary item to play + videoView.setVideoURI(Uri.parse("http://pcock.com/public/upload/twilio_media/VIDEO_20181205_140947-20181205084109450389.mp4")); + } + + @Override + public void onPrepared() { + videoView.start(); + } +} diff --git a/app/src/main/res/layout/activity_video.xml b/app/src/main/res/layout/activity_video.xml new file mode 100644 index 0000000..ee54065 --- /dev/null +++ b/app/src/main/res/layout/activity_video.xml @@ -0,0 +1,22 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/inflater_category.xml b/app/src/main/res/layout/inflater_category.xml index 62e2aa7..9076053 100644 --- a/app/src/main/res/layout/inflater_category.xml +++ b/app/src/main/res/layout/inflater_category.xml @@ -32,7 +32,7 @@ diff --git a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java index 8c77feb..0203a0d 100644 --- a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java +++ b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java @@ -27,489 +27,499 @@ public abstract class EasyAdapter extends RecyclerView.Adapter { - private final int VIEW_ITEM = 1; - private final int VIEW_PROGRESS = 0; - private boolean loading = false; - private boolean isLoadMoreEnabled = false; - private int loadMoreRes = R.layout.layout_load_more; - private final ArrayList data; - private final ArrayList temp; - private int layout; - private OnRecyclerViewItemClick recyclerViewItemClick; - private OnRecyclerViewItemCheckChange recyclerViewItemCheckChange; - private ArrayList> onDataUpdateArrayList; + private final int VIEW_ITEM = 1; + private final int VIEW_PROGRESS = 0; + private boolean loading = false; + private boolean isLoadMoreEnabled = false; + private int loadMoreRes = R.layout.layout_load_more; + private final ArrayList data; + private final ArrayList temp; + private int layout; + private OnRecyclerViewItemClick recyclerViewItemClick; + private OnRecyclerViewItemCheckChange recyclerViewItemCheckChange; + private ArrayList> onDataUpdateArrayList; + + public interface OnRecyclerViewItemClick { + void onRecyclerViewItemClick(View view, M model); + } + + public interface OnRecyclerViewItemCheckChange { + void onRecyclerViewItemCheckChange(View view, boolean isCheck, M model); + } + + public interface OnHolderItemClick { + void onHolderItemClick(View view, int position); + } + + public interface OnHolderItemCheckChange { + void onHolderItemCheckChange(View view, boolean isCheck, int position); + } + + public interface OnFilter { + boolean onFilterApply(@Nullable Object filter, @NonNull M model); - public interface OnRecyclerViewItemClick { - void onRecyclerViewItemClick(View view, M model); - } + void onFilterResult(ArrayList filteredList); + } + + public interface OnLoadMoreListener { + boolean onLoadMore(); + } + + public interface OnDataUpdate { + public void onDataUpdate(ArrayList data); + } - public interface OnRecyclerViewItemCheckChange { - void onRecyclerViewItemCheckChange(View view, boolean isCheck, M model); - } - public interface OnHolderItemClick { - void onHolderItemClick(View view, int position); - } + public EasyAdapter(@LayoutRes int layout) { + data = new ArrayList<>(); + temp = new ArrayList<>(); + temp.addAll(data); + enableDataObserver(); + this.layout = layout; + onDataUpdateArrayList = new ArrayList<>(); + } + + public void onCreatingHolder(@NonNull B binding, @NonNull EasyHolder holder) { + + } + + public abstract void onBind(@NonNull B binding, @NonNull M model); + + public void onBind(@NonNull B binding, @NonNull M model, @NonNull List payloads) { + } + + + public final ArrayList getData() { + return data; + } + + public final ArrayList getTemp() { + return temp; + } + + public void clear(boolean deepClean) { + data.clear(); + if (deepClean) { + temp.clear(); + } + } + + + private void clearFilter() { + data.clear(); + data.addAll(temp); + } + + public void add(M model) { + data.add(model); + temp.add(model); + notifyDataSetChanged(); + } + + public int addOnly(M model) { + data.add(model); + temp.add(model); + return data.size() - 1; + /*notifyDataSetChanged();*/ + } + + + @Deprecated + public void remove(M model) { + data.remove(model); + temp.remove(model); + notifyDataSetChanged(); + } + + public void removeOnly(int pos) { + M model = data.get(pos); + data.remove(model); + temp.remove(model); + notifyDataSetChanged(); + } - public interface OnHolderItemCheckChange { - void onHolderItemCheckChange(View view, boolean isCheck, int position); + public void addAll(List addAll, boolean deepCopy) { + data.addAll(addAll); + if (deepCopy) { + temp.addAll(addAll); } + /*notifyDataSetChanged();*/ + } - public interface OnFilter { - boolean onFilterApply(@Nullable Object filter, @NonNull M model); + public EasyAdapter setRecyclerViewItemClick(OnRecyclerViewItemClick recyclerViewItemClick) { + this.recyclerViewItemClick = recyclerViewItemClick; + return this; + } - void onFilterResult(ArrayList filteredList); - } + public EasyAdapter setRecyclerViewItemCheckChange(OnRecyclerViewItemCheckChange recyclerViewItemCheckChange) { + this.recyclerViewItemCheckChange = recyclerViewItemCheckChange; + return this; + } - public interface OnLoadMoreListener { - boolean onLoadMore(); - } - public interface OnDataUpdate { - public void onDataUpdate(ArrayList data); - } + public void onItemClick(View view, M model) { + if (recyclerViewItemClick != null) + recyclerViewItemClick.onRecyclerViewItemClick(view, model); + } + + public void onItemCheckChange(View view, boolean isCheck, M model) { + if (recyclerViewItemCheckChange != null) + recyclerViewItemCheckChange.onRecyclerViewItemCheckChange(view, isCheck, model); + } - public EasyAdapter(@LayoutRes int layout) { - data = new ArrayList<>(); - temp = new ArrayList<>(); - temp.addAll(data); - enableDataObserver(); - this.layout = layout; - onDataUpdateArrayList = new ArrayList<>(); + public void performFilter(Object text, OnFilter onFilter) { + ArrayList result = new ArrayList<>(); + if (text.toString().length() <= 0) { + result.addAll(temp); + } else { + result.clear(); + for (M d : temp) { + if (d instanceof OnFilter) { + onFilter = (OnFilter) d; + } + if (onFilter != null) { + if (onFilter.onFilterApply(text, d)) { + result.add(d); + } + } + } } - - public void onCreatingHolder(@NonNull B binding, @NonNull EasyHolder holder) { - + if (onFilter != null) { + onFilter.onFilterResult(result); } + } - public abstract void onBind(@NonNull B binding, @NonNull M model); - public void onBind(@NonNull B binding, @NonNull M model, @NonNull List payloads) { + @Override + public final EasyHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if (viewType == VIEW_ITEM) { + EasyHolder easyHolder = new EasyHolder(DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), + layout, parent, false)); + onCreatingHolder((B) easyHolder.binding, easyHolder); + easyHolder.setHolderItemClick(new OnHolderItemClick() { + @Override + public void onHolderItemClick(View view, int position) { + if (position != -1) + onItemClick(view, data.get(position)); + } + }); + easyHolder.setHolderItemCheckChange(new OnHolderItemCheckChange() { + @Override + public void onHolderItemCheckChange(View view, boolean isCheck, int position) { + if (position != -1) { + onItemCheckChange(view, isCheck, data.get(position)); + } + } + }); + return easyHolder; + } else { + View view; + if (loadMoreRes == -1) { + view = getProgressView(parent.getContext()); + } else { + view = LayoutInflater.from(parent.getContext()).inflate(loadMoreRes, parent, false); + } + return new ProgressViewHolder(view); + } + } + + @Override + public final void onBindViewHolder(@NonNull EasyHolder holder, int position) { + if (!holder.isLoadingView) { + onBind((B) holder.binding, data.get(position)); + } + } + + @Override + public final void onBindViewHolder(@NonNull EasyHolder holder, int position, @NonNull List payloads) { + super.onBindViewHolder(holder, position, payloads); + if (!holder.isLoadingView) { + onBind((B) holder.binding, data.get(position), payloads); + } + } + + @Override + public int getItemCount() { + if (data == null) return 0; + if (isLoadMoreEnabled && loading) + return data.size() + 1; + return data.size(); + } + + @Override + public int getItemViewType(int position) { + if (isLoadMoreEnabled && loading) { + if (position == getItemCount() - 1) { + return VIEW_PROGRESS; + } else return VIEW_ITEM; + } + return VIEW_ITEM; + } + + private View getProgressView(Context context) { + View view = new FrameLayout(context); + view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + + ProgressBar progressBar = new ProgressBar(context, null, android.R.attr.progressBarStyleSmall); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + lp.gravity = Gravity.CENTER_HORIZONTAL; + progressBar.setLayoutParams(lp); + ((ViewGroup) view).addView(progressBar); + return view; + } + + + public void setLoadMoreComplete() { + loading = false; + notifyDataSetChanged(); + } + + public void setLoadMoreRes(int loadMoreRes) { + this.loadMoreRes = loadMoreRes; + } + + public EasyAdapter setOnLoadMoreListener(RecyclerView recyclerView, final OnLoadMoreListener onLoadMoreListener) { + if (recyclerView != null && onLoadMoreListener != null) { + + final RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); + + if (layoutManager instanceof GridLayoutManager) { + ((GridLayoutManager) layoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + if (getItemViewType(position) == VIEW_PROGRESS) + return ((GridLayoutManager) layoutManager).getSpanCount(); + return 1; + } + }); + } + + recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + + int totalItemCount = layoutManager.getItemCount(); + int lastVisibleItem = 0; + + if (layoutManager instanceof StaggeredGridLayoutManager) { + int[] lastVisibleItemPositions = ((StaggeredGridLayoutManager) layoutManager).findLastVisibleItemPositions(null); + lastVisibleItem = getLastVisibleItem(lastVisibleItemPositions); + } else if (layoutManager instanceof GridLayoutManager) { + lastVisibleItem = ((GridLayoutManager) layoutManager).findLastVisibleItemPosition(); + } else if (layoutManager instanceof LinearLayoutManager) { + lastVisibleItem = ((LinearLayoutManager) layoutManager).findLastVisibleItemPosition(); + } + if (!loading && totalItemCount <= (lastVisibleItem + 2)) { + new android.os.Handler().post(new Runnable() { + @Override + public void run() { + boolean previous = loading; + loading = onLoadMoreListener.onLoadMore(); + if (loading != previous) { + if (!previous) { + notifyItemInserted(getItemCount() - 1); + } else if (previous == true && loading == false) { + notifyItemRemoved(getItemCount() - 1); + } + } + } + }); + } + } + }); + + isLoadMoreEnabled = true; } + return this; + } - public final ArrayList getData() { - return data; + private int getLastVisibleItem(int[] lastVisibleItemPositions) { + int maxSize = 0; + for (int i = 0; i < lastVisibleItemPositions.length; i++) { + if (i == 0) { + maxSize = lastVisibleItemPositions[i]; + } else if (lastVisibleItemPositions[i] > maxSize) { + maxSize = lastVisibleItemPositions[i]; + } } + return maxSize; + } - public final ArrayList getTemp() { - return temp; - } - public void clear(boolean deepClean) { - data.clear(); - if (deepClean) { - temp.clear(); - } - } + public static class EasyHolder extends RecyclerView.ViewHolder implements SwipeOpenViewHolder { + private ViewDataBinding binding; + boolean isLoadingView; + private OnHolderItemClick holderItemClick; + private OnHolderItemCheckChange holderItemCheckChange; + public View swipeView; + public int startViewSize = 0, endViewSize = 0; - private void clearFilter() { - data.clear(); - data.addAll(temp); - } + public Object object; - public void add(M model) { - data.add(model); - temp.add(model); - notifyDataSetChanged(); + public void setTag(Object object) { + this.object = object; } - public int addOnly(M model) { - data.add(model); - temp.add(model); - return data.size() - 1; - /*notifyDataSetChanged();*/ + public Object getTag() { + return object; } + public EasyHolder(ViewDataBinding itemView) { + super(itemView.getRoot()); + binding = itemView; - @Deprecated - public void remove(M model) { - data.remove(model); - temp.remove(model); - notifyDataSetChanged(); } - public void removeOnly(int pos) { - M model = data.get(pos); - data.remove(model); - temp.remove(model); - notifyDataSetChanged(); + public EasyHolder(View view) { + super(view); } - public void addAll(List addAll, boolean deepCopy) { - data.addAll(addAll); - if (deepCopy) { - temp.addAll(addAll); - } - /*notifyDataSetChanged();*/ + void setHolderItemClick(OnHolderItemClick holderItemClick) { + this.holderItemClick = holderItemClick; } - public EasyAdapter setRecyclerViewItemClick(OnRecyclerViewItemClick recyclerViewItemClick) { - this.recyclerViewItemClick = recyclerViewItemClick; - return this; + public void setHolderItemCheckChange(OnHolderItemCheckChange holderItemCheckChange) { + this.holderItemCheckChange = holderItemCheckChange; } - public EasyAdapter setRecyclerViewItemCheckChange(OnRecyclerViewItemCheckChange recyclerViewItemCheckChange) { - this.recyclerViewItemCheckChange = recyclerViewItemCheckChange; - return this; - } - - - public void onItemClick(View view, M model) { - if (recyclerViewItemClick != null) - recyclerViewItemClick.onRecyclerViewItemClick(view, model); - } + private View.OnClickListener mOnClickListener = new View.OnClickListener() { + @Override + public void onClick(View view) { + holderItemClick.onHolderItemClick(view, getAdapterPosition()); + } + }; - public void onItemCheckChange(View view, boolean isCheck, M model) { - if (recyclerViewItemCheckChange != null) - recyclerViewItemCheckChange.onRecyclerViewItemCheckChange(view, isCheck, model); + public View.OnClickListener getClickListener() { + return mOnClickListener; } + public CompoundButton.OnCheckedChangeListener checkedChangeListener = new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean b) { + holderItemCheckChange.onHolderItemCheckChange(compoundButton, b, getAdapterPosition()); + } + }; - public void performFilter(Object text, OnFilter onFilter) { - ArrayList result = new ArrayList<>(); - if (text.toString().length() <= 0) { - result.addAll(temp); - } else { - result.clear(); - for (M d : temp) { - if (d instanceof OnFilter) { - onFilter = (OnFilter) d; - } - if (onFilter != null) { - if (onFilter.onFilterApply(text, d)) { - result.add(d); - } - } - } - } - if (onFilter != null) { - onFilter.onFilterResult(result); - } + public CompoundButton.OnCheckedChangeListener getCheckedChangeListener() { + return checkedChangeListener; } + public void setEnableSwipeToDelete(View swipeView, int startViewSize, int endViewSize) { + this.swipeView = swipeView; + this.startViewSize = startViewSize; + this.endViewSize = endViewSize; + } + @NonNull @Override - public final EasyHolder onCreateViewHolder(ViewGroup parent, int viewType) { - if (viewType == VIEW_ITEM) { - EasyHolder easyHolder = new EasyHolder(DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), - layout, parent, false)); - onCreatingHolder((B) easyHolder.binding, easyHolder); - easyHolder.setHolderItemClick(new OnHolderItemClick() { - @Override - public void onHolderItemClick(View view, int position) { - if (position != -1) - onItemClick(view, data.get(position)); - } - }); - easyHolder.setHolderItemCheckChange(new OnHolderItemCheckChange() { - @Override - public void onHolderItemCheckChange(View view, boolean isCheck, int position) { - if (position != -1) { - onItemCheckChange(view, isCheck, data.get(position)); - } - } - }); - return easyHolder; - } else { - View view; - if (loadMoreRes == -1) { - view = getProgressView(parent.getContext()); - } else { - view = LayoutInflater.from(parent.getContext()).inflate(loadMoreRes, parent, false); - } - return new ProgressViewHolder(view); - } + public View getSwipeView() { + return swipeView; } + @NonNull @Override - public final void onBindViewHolder(@NonNull EasyHolder holder, int position) { - if (!holder.isLoadingView) { - onBind((B) holder.binding, data.get(position)); - } + public RecyclerView.ViewHolder getViewHolder() { + return this; } @Override - public final void onBindViewHolder(@NonNull EasyHolder holder, int position, @NonNull List payloads) { - super.onBindViewHolder(holder, position, payloads); - if (!holder.isLoadingView) { - onBind((B) holder.binding, data.get(position), payloads); - } + public float getEndHiddenViewSize() { + return endViewSize; } @Override - public int getItemCount() { - if (data == null) return 0; - if (isLoadMoreEnabled && loading) - return data.size() + 1; - return data.size(); + public float getStartHiddenViewSize() { + return startViewSize; } @Override - public int getItemViewType(int position) { - if (isLoadMoreEnabled && loading) { - if (position == getItemCount() - 1) { - return VIEW_PROGRESS; - } else return VIEW_ITEM; - } - return VIEW_ITEM; - } - - private View getProgressView(Context context) { - View view = new FrameLayout(context); - view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); - - ProgressBar progressBar = new ProgressBar(context, null, android.R.attr.progressBarStyleSmall); - FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - lp.gravity = Gravity.CENTER_HORIZONTAL; - progressBar.setLayoutParams(lp); - ((ViewGroup) view).addView(progressBar); - return view; - } - - - public void setLoadMoreComplete() { - loading = false; - notifyDataSetChanged(); - } - - public void setLoadMoreRes(int loadMoreRes) { - this.loadMoreRes = loadMoreRes; - } - - public EasyAdapter setOnLoadMoreListener(RecyclerView recyclerView, final OnLoadMoreListener onLoadMoreListener) { - if (recyclerView != null && onLoadMoreListener != null) { - - final RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); - - if (layoutManager instanceof GridLayoutManager) { - ((GridLayoutManager) layoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { - @Override - public int getSpanSize(int position) { - if (getItemViewType(position) == VIEW_PROGRESS) - return ((GridLayoutManager) layoutManager).getSpanCount(); - return 1; - } - }); - } - - recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrolled(RecyclerView recyclerView, int dx, int dy) { - super.onScrolled(recyclerView, dx, dy); - - int totalItemCount = layoutManager.getItemCount(); - int lastVisibleItem = 0; - - if (layoutManager instanceof StaggeredGridLayoutManager) { - int[] lastVisibleItemPositions = ((StaggeredGridLayoutManager) layoutManager).findLastVisibleItemPositions(null); - lastVisibleItem = getLastVisibleItem(lastVisibleItemPositions); - } else if (layoutManager instanceof GridLayoutManager) { - lastVisibleItem = ((GridLayoutManager) layoutManager).findLastVisibleItemPosition(); - } else if (layoutManager instanceof LinearLayoutManager) { - lastVisibleItem = ((LinearLayoutManager) layoutManager).findLastVisibleItemPosition(); - } - if (!loading && totalItemCount <= (lastVisibleItem + 2)) { - new android.os.Handler().post(new Runnable() { - @Override - public void run() { - boolean previous = loading; - loading = onLoadMoreListener.onLoadMore(); - if (loading != previous) { - if (!previous) { - notifyItemInserted(getItemCount() - 1); - } else if (previous == true && loading == false) { - notifyItemRemoved(getItemCount() - 1); - } - } - } - }); - } - } - }); + public void notifyStartOpen() { - isLoadMoreEnabled = true; - } - return this; } + @Override + public void notifyEndOpen() { - private int getLastVisibleItem(int[] lastVisibleItemPositions) { - int maxSize = 0; - for (int i = 0; i < lastVisibleItemPositions.length; i++) { - if (i == 0) { - maxSize = lastVisibleItemPositions[i]; - } else if (lastVisibleItemPositions[i] > maxSize) { - maxSize = lastVisibleItemPositions[i]; - } - } - return maxSize; } + } + private class ProgressViewHolder extends EasyHolder { + ProgressViewHolder(View v) { + super(v); + isLoadingView = true; + swipeView = v; + startViewSize = 0; + endViewSize = 0; + setEnableSwipeToDelete(v, 0, 0); + } + } - public static class EasyHolder extends RecyclerView.ViewHolder implements SwipeOpenViewHolder { - - private ViewDataBinding binding; - boolean isLoadingView; - private OnHolderItemClick holderItemClick; - private OnHolderItemCheckChange holderItemCheckChange; - public View swipeView; - public int startViewSize = 0, endViewSize = 0; - - public EasyHolder(ViewDataBinding itemView) { - super(itemView.getRoot()); - binding = itemView; - - } - - public EasyHolder(View view) { - super(view); - } - - void setHolderItemClick(OnHolderItemClick holderItemClick) { - this.holderItemClick = holderItemClick; - } - - public void setHolderItemCheckChange(OnHolderItemCheckChange holderItemCheckChange) { - this.holderItemCheckChange = holderItemCheckChange; - } - - private View.OnClickListener mOnClickListener = new View.OnClickListener() { - @Override - public void onClick(View view) { - holderItemClick.onHolderItemClick(view, getAdapterPosition()); - } - }; - - public View.OnClickListener getClickListener() { - return mOnClickListener; - } - - public CompoundButton.OnCheckedChangeListener checkedChangeListener = new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean b) { - holderItemCheckChange.onHolderItemCheckChange(compoundButton, b, getAdapterPosition()); - } - }; - - public CompoundButton.OnCheckedChangeListener getCheckedChangeListener() { - return checkedChangeListener; - } - - public void setEnableSwipeToDelete(View swipeView, int startViewSize, int endViewSize) { - this.swipeView = swipeView; - this.startViewSize = startViewSize; - this.endViewSize = endViewSize; - } - - @NonNull - @Override - public View getSwipeView() { - return swipeView; - } - - @NonNull - @Override - public RecyclerView.ViewHolder getViewHolder() { - return this; - } + public void enableSwipeAction(RecyclerView recyclerView) { + SwipeOpenItemTouchHelper helper = new SwipeOpenItemTouchHelper(new SwipeOpenItemTouchHelper.SimpleCallback( + SwipeOpenItemTouchHelper.START | SwipeOpenItemTouchHelper.END)); + helper.attachToRecyclerView(recyclerView); + } - @Override - public float getEndHiddenViewSize() { - return endViewSize; - } - - @Override - public float getStartHiddenViewSize() { - return startViewSize; - } - @Override - public void notifyStartOpen() { + public EasyAdapter addOnDataUpdateListener(OnDataUpdate onDataUpdate) { + this.onDataUpdateArrayList.add(onDataUpdate); + return this; + } - } + private void onDataUpdate() { + for (OnDataUpdate onDataUpdate : onDataUpdateArrayList) { + onDataUpdate.onDataUpdate(getData()); + } + } - @Override - public void notifyEndOpen() { + public final void disableDataObserver() { + unregisterAdapterDataObserver(dataChangeObs); + } - } - } + public final void enableDataObserver() { + registerAdapterDataObserver(dataChangeObs); + } - private class ProgressViewHolder extends EasyHolder { - ProgressViewHolder(View v) { - super(v); - isLoadingView = true; - swipeView = v; - startViewSize = 0; - endViewSize = 0; - setEnableSwipeToDelete(v, 0, 0); - } + private RecyclerView.AdapterDataObserver dataChangeObs = new RecyclerView.AdapterDataObserver() { + @Override + public void onChanged() { + super.onChanged(); + onDataUpdate(); } - public void enableSwipeAction(RecyclerView recyclerView) { - SwipeOpenItemTouchHelper helper = new SwipeOpenItemTouchHelper(new SwipeOpenItemTouchHelper.SimpleCallback( - SwipeOpenItemTouchHelper.START | SwipeOpenItemTouchHelper.END)); - helper.attachToRecyclerView(recyclerView); + @Override + public void onItemRangeChanged(int positionStart, int itemCount) { + super.onItemRangeChanged(positionStart, itemCount); + onDataUpdate(); } - - public EasyAdapter addOnDataUpdateListener(OnDataUpdate onDataUpdate) { - this.onDataUpdateArrayList.add(onDataUpdate); - return this; + @Override + public void onItemRangeChanged(int positionStart, int itemCount, @Nullable Object payload) { + super.onItemRangeChanged(positionStart, itemCount, payload); + onDataUpdate(); } - private void onDataUpdate() { - for (OnDataUpdate onDataUpdate : onDataUpdateArrayList) { - onDataUpdate.onDataUpdate(getData()); - } + @Override + public void onItemRangeInserted(int positionStart, int itemCount) { + super.onItemRangeInserted(positionStart, itemCount); + onDataUpdate(); } - public final void disableDataObserver() { - unregisterAdapterDataObserver(dataChangeObs); + @Override + public void onItemRangeRemoved(int positionStart, int itemCount) { + super.onItemRangeRemoved(positionStart, itemCount); + onDataUpdate(); } - public final void enableDataObserver() { - registerAdapterDataObserver(dataChangeObs); + @Override + public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { + super.onItemRangeMoved(fromPosition, toPosition, itemCount); + onDataUpdate(); } - - private RecyclerView.AdapterDataObserver dataChangeObs = new RecyclerView.AdapterDataObserver() { - @Override - public void onChanged() { - super.onChanged(); - onDataUpdate(); - } - - @Override - public void onItemRangeChanged(int positionStart, int itemCount) { - super.onItemRangeChanged(positionStart, itemCount); - onDataUpdate(); - } - - @Override - public void onItemRangeChanged(int positionStart, int itemCount, @Nullable Object payload) { - super.onItemRangeChanged(positionStart, itemCount, payload); - onDataUpdate(); - } - - @Override - public void onItemRangeInserted(int positionStart, int itemCount) { - super.onItemRangeInserted(positionStart, itemCount); - onDataUpdate(); - } - - @Override - public void onItemRangeRemoved(int positionStart, int itemCount) { - super.onItemRangeRemoved(positionStart, itemCount); - onDataUpdate(); - } - - @Override - public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { - super.onItemRangeMoved(fromPosition, toPosition, itemCount); - onDataUpdate(); - } - }; + }; } \ No newline at end of file From a092e91d9decf794aaa28e73757f61dc1e5c0bd3 Mon Sep 17 00:00:00 2001 From: hb Date: Tue, 8 Jan 2019 16:13:20 +0530 Subject: [PATCH 11/23] added setTag() getTag() method for holder --- app/src/main/aidl/dc/krupal/ICallback.aidl | 27 --- .../main/aidl/dc/krupal/IWoyouService.aidl | 202 ------------------ .../dc/com/easyadapter/TransBean.aidl | 4 - 3 files changed, 233 deletions(-) delete mode 100644 app/src/main/aidl/dc/krupal/ICallback.aidl delete mode 100644 app/src/main/aidl/dc/krupal/IWoyouService.aidl delete mode 100644 app/src/main/aidl/easyadapter/dc/com/easyadapter/TransBean.aidl diff --git a/app/src/main/aidl/dc/krupal/ICallback.aidl b/app/src/main/aidl/dc/krupal/ICallback.aidl deleted file mode 100644 index cf1591a..0000000 --- a/app/src/main/aidl/dc/krupal/ICallback.aidl +++ /dev/null @@ -1,27 +0,0 @@ -// ICallback.aidl -package dc.krupal; - -/** - * Callback of print service execution results - */ -interface ICallback { - - /** - * Return execution result - * @param isSuccess: True execution succeeded, false execution failed - */ - oneway void onRunResult(boolean isSuccess); - - /** - *Return result (string data) - * @param result: As a result, the print length (in mm) since the printer was powered on - */ - oneway void onReturnString(String result); - - /** - * Execution exception - * Code: exception code - * Msg: exception description - */ - oneway void onRaiseException(int code, String msg); -} \ No newline at end of file diff --git a/app/src/main/aidl/dc/krupal/IWoyouService.aidl b/app/src/main/aidl/dc/krupal/IWoyouService.aidl deleted file mode 100644 index 0845eb1..0000000 --- a/app/src/main/aidl/dc/krupal/IWoyouService.aidl +++ /dev/null @@ -1,202 +0,0 @@ -// IWoyouService.aidl - -package dc.krupal; - -import dc.krupal.ICallback; -import android.graphics.Bitmap; -import easyadapter.dc.com.easyadapter.TransBean; - -interface IWoyouService -{ - - - /** - * Printer firmware upgrade (only for system component calls, developer calls are invalid) - * @param buffer - * @param size - * @param filename - * @param iapInterface - */ - void updateFirmware(); - - /** - * Printer firmware status - * return: 0--unknown, A5--bootloader, C3--print - */ - int getFirmwareStatus(); - - /** - * Take the WoyouService service version - */ - String getServiceVersion(); - - /** - * Initialize the printer, reset the printer's logic, but not clear the buffer data, so - * Incomplete print jobs will continue after reset - * @param callback - * @return - */ - void printerInit(in ICallback callback); - - /** - *The printer self-test, the printer will print a self-test page - * @param callback - */ - void printerSelfChecking(in ICallback callback); - - /** - * Get the printer board serial number - */ - String getPrinterSerialNo(); - - /** - * Get the printer firmware version number - */ - String getPrinterVersion(); - - /** - * Get the printer model - */ - String getPrinterModal(); - - /** - * Get printhead print length - */ - void getPrintedLength(in ICallback callback); - - /** - * The printer feeds paper (forced line feed, after the end of the print content, the paper is n lines) - * @param n: Number of lines - * @param callback Result callback - * @return - */ - void lineWrap(int n, in ICallback callback); - - /** - * Print using the original instructions - * @param data instruction - * @param callback Result callback - */ - void sendRAWData(in byte[] data, in ICallback callback); - - /** - * Set the alignment mode to have an effect on subsequent printing unless initialized - * @param alignment: Alignment 0--Left , 1--Centered, 2--Right - * @param callback 结果回调 - */ - void setAlignment(int alignment, in ICallback callback); - - /** - *Set the print font to have an effect on the print afterwards, unless initialized - *(Currently only one font "gh" is supported, gh is a monospaced Chinese font, and more font options will be provided later) - * @param typeface: Font name - */ - void setFontName(String typeface, in ICallback callback); - - /** - * Set the font size, which has an effect on printing afterwards, unless initialized - *Note: The font size is printed beyond the standard international directives. - * Adjusting the font size will affect the character width, and the number of characters per line will also change. - * Therefore, the layout formed by the monospaced font may be confusing. - * @param fontsize: font size - */ - void setFontSize(float fontsize, in ICallback callback); - - /** - * Print text, the text width is full of one line, and it is automatically wrapped and typeset. If it is not full, it will not print unless it is forced to wrap. - * @param text: The text string to be printed - */ - void printText(String text, in ICallback callback); - - /** - *Print the text of the specified font, the font setting is only valid for this time. - * @param text: To print text - * @param typeface: Font name (currently only supports "gh" font) - * @param fontsize: font size - */ - void printTextWithFont(String text, String typeface, float fontsize, in ICallback callback); - - /** - * Print a row of the table, you can specify the column width, alignment - * @param colsTextArr Array of text strings for each column - * @param colsWidthArr Array of column widths (in English characters, each Chinese character occupies two English characters, each width is greater than 0) - * @param colsAlign Alignment of columns (0 left, 1 center, 2 right) - * Remarks: The array length of the three parameters should be the same. If the width of colsText[i] is greater than colsWidth[i], the text is wrapped. - */ - void printColumnsText(in String[] colsTextArr, in int[] colsWidthArr, in int[] colsAlign, in ICallback callback); - - - /** - * Print picture - * @param bitmap: Image bitmap object (maximum width 384 pixels, more than unprintable and callback callback exception function) - */ - void printBitmap(in Bitmap bitmap, in ICallback callback); - - /** - * Print one-dimensional barcode - * @param data: Bar code data - * @param symbology: Barcode type - * 0 -- UPC-A - * 1 -- UPC-E - * 2 -- JAN13(EAN13) - * 3 -- JAN8(EAN8) - * 4 -- CODE39 - * 5 -- ITF - * 6 -- CODABAR - * 7 -- CODE93 - * 8 -- CODE128 - * @param height: Bar code height, Value 1 to 255, Default 162 - * @param width: Bar code width, Value 2 to 6, Default 2 - * @param textposition: Text position 0--Do not print text, 1--Text above the barcode, 2--Text below the barcode, 3--Both the top and bottom of the barcode are printed - */ - void printBarCode(String data, int symbology, int height, int width, int textposition, in ICallback callback); - - /** - * Print 2D barcode - * @param data: QR code data - * @param modulesize: Two-dimensional code block size (unit: point, value 1 to 16) - * @param errorlevel: QR code error correction level (0 to 3), - * 0 -- Error correction level L (7%), - * 1 -- Error correction level M (15%), - * 2 -- Error correction level Q (25%), - * 3 -- Error correction level H (30%) - */ - void printQRCode(String data, int modulesize, int errorlevel, in ICallback callback); - - /** - *Print text, the text width is full of one line, and it is automatically wrapped and typeset. If it is not full, it will not print unless it is forced to wrap. - * The text is output as it is in the width of the vector text, that is, each character is not equal in width - * @param text: The text string to be printed - * - */ - void printOriginalText(String text, in ICallback callback); - - /** - * Lib package transaction printing dedicated interface - * transbean Print task list - * Ver 1.8.0Increase - */ - void commitPrint(in TransBean[] transbean, in ICallback callback); - - /** - * Print buffer content - */ - void commitPrinterBuffer(); - - /** - * Enter buffer mode, all print calls will be cached, print after calling promisePrinterBuffe() - * - * @param clean: Whether to clear the buffer contents - * - */ - void enterPrinterBuffer(in boolean clean); - - /** - * Exit buffer mode - * - * @param commit: Whether to print out the contents of the buffer - * - */ - void exitPrinterBuffer(in boolean commit); - -} \ No newline at end of file diff --git a/app/src/main/aidl/easyadapter/dc/com/easyadapter/TransBean.aidl b/app/src/main/aidl/easyadapter/dc/com/easyadapter/TransBean.aidl deleted file mode 100644 index e0bad9b..0000000 --- a/app/src/main/aidl/easyadapter/dc/com/easyadapter/TransBean.aidl +++ /dev/null @@ -1,4 +0,0 @@ -// TransBean.aidl -package easyadapter.dc.com.easyadapter; - -parcelable TransBean; \ No newline at end of file From 3a608b2cf355e001f9d0031499f93081ccd73941 Mon Sep 17 00:00:00 2001 From: hb Date: Tue, 8 Jan 2019 16:45:17 +0530 Subject: [PATCH 12/23] add onBindViewHolder with holder --- .../src/main/java/easyadapter/dc/com/library/EasyAdapter.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java index 0203a0d..c17f0dd 100644 --- a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java +++ b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java @@ -85,6 +85,9 @@ public void onCreatingHolder(@NonNull B binding, @NonNull EasyHolder holder) { public abstract void onBind(@NonNull B binding, @NonNull M model); + public void onBind(@NonNull B binding, @NonNull M model, EasyHolder holder) { + } + public void onBind(@NonNull B binding, @NonNull M model, @NonNull List payloads) { } @@ -228,6 +231,7 @@ public void onHolderItemCheckChange(View view, boolean isCheck, int position) { public final void onBindViewHolder(@NonNull EasyHolder holder, int position) { if (!holder.isLoadingView) { onBind((B) holder.binding, data.get(position)); + onBind((B) holder.binding, data.get(position), holder); } } From 2169071e2360c4158b06ace87e8aa3356b5713a2 Mon Sep 17 00:00:00 2001 From: hb Date: Fri, 18 Jan 2019 12:23:17 +0530 Subject: [PATCH 13/23] added invalidateObserver() to invalidate data change observer --- .../main/java/easyadapter/dc/com/library/EasyAdapter.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java index c17f0dd..73b916c 100644 --- a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java +++ b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java @@ -526,4 +526,9 @@ public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { } }; + public void invalidateObserver() + { + onDataUpdate(); + } + } \ No newline at end of file From 259b19c6b3e19280da6d5b2e8512000c5b1c4ee5 Mon Sep 17 00:00:00 2001 From: hb Date: Tue, 22 Jan 2019 16:26:16 +0530 Subject: [PATCH 14/23] added setOnClickListeners(), setOnCheckChangeListeners() method to setting listener to bulk views --- .idea/caches/build_file_checksums.ser | Bin 580 -> 580 bytes .../easyadapter/dc/com/library/EasyAdapter.java | 15 +++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 49ad73cae918a4e97cfaff7f87755916da6bcc4c..ea4779d78b8d7057df03f12d7492e9e55310c5f8 100644 GIT binary patch delta 15 XcmX@Ya)f2V43_vk8MPbdtY8EHH4z50 delta 15 XcmX@Ya)f2V3>KYV%zrn|S-}VZHBAQD diff --git a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java index 73b916c..180e6b1 100644 --- a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java +++ b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java @@ -526,8 +526,19 @@ public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { } }; - public void invalidateObserver() - { + public void setOnClickListeners(EasyHolder holder, View... views) { + for (View view : views) { + view.setOnClickListener(holder.getClickListener()); + } + } + + public void setOnCheckChangeListeners(EasyHolder holder, CompoundButton... compoundButtons) { + for (CompoundButton view : compoundButtons) { + view.setOnCheckedChangeListener(holder.getCheckedChangeListener()); + } + } + + public void invalidateObserver() { onDataUpdate(); } From 9c874efdd2639d19e720ea290f1bc37949807ed5 Mon Sep 17 00:00:00 2001 From: hb Date: Tue, 22 Jan 2019 16:26:53 +0530 Subject: [PATCH 15/23] added setOnClickListeners(), setOnCheckChangeListeners() method to setting listener to bulk views --- .../src/main/java/easyadapter/dc/com/library/EasyAdapter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java index 180e6b1..7024e82 100644 --- a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java +++ b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java @@ -526,13 +526,13 @@ public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { } }; - public void setOnClickListeners(EasyHolder holder, View... views) { + public final void setOnClickListeners(EasyHolder holder, View... views) { for (View view : views) { view.setOnClickListener(holder.getClickListener()); } } - public void setOnCheckChangeListeners(EasyHolder holder, CompoundButton... compoundButtons) { + public final void setOnCheckChangeListeners(EasyHolder holder, CompoundButton... compoundButtons) { for (CompoundButton view : compoundButtons) { view.setOnCheckedChangeListener(holder.getCheckedChangeListener()); } From cabc7e4fdf0eaa4d1e28e07287cb1e38076229a4 Mon Sep 17 00:00:00 2001 From: hb Date: Tue, 22 Jan 2019 16:50:47 +0530 Subject: [PATCH 16/23] added setOnClickListeners(), setOnCheckChangeListeners() method to setting listener to bulk views --- .../dc/com/library/EasyAdapter.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java index 7024e82..a7097d4 100644 --- a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java +++ b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java @@ -449,6 +449,18 @@ public void notifyStartOpen() { public void notifyEndOpen() { } + + public final void setOnClickListeners(View... views) { + for (View view : views) { + view.setOnClickListener(getClickListener()); + } + } + + public final void setOnCheckChangeListeners(CompoundButton... compoundButtons) { + for (CompoundButton view : compoundButtons) { + view.setOnCheckedChangeListener(getCheckedChangeListener()); + } + } } private class ProgressViewHolder extends EasyHolder { @@ -526,17 +538,6 @@ public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { } }; - public final void setOnClickListeners(EasyHolder holder, View... views) { - for (View view : views) { - view.setOnClickListener(holder.getClickListener()); - } - } - - public final void setOnCheckChangeListeners(EasyHolder holder, CompoundButton... compoundButtons) { - for (CompoundButton view : compoundButtons) { - view.setOnCheckedChangeListener(holder.getCheckedChangeListener()); - } - } public void invalidateObserver() { onDataUpdate(); From d4ca5ad6bdfb15d9256085da8d4e15b4d3bb4f5e Mon Sep 17 00:00:00 2001 From: hb Date: Thu, 7 Feb 2019 21:06:51 +0530 Subject: [PATCH 17/23] added removeonly method --- .idea/caches/build_file_checksums.ser | Bin 580 -> 580 bytes app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 24 ++++++++++++++++-- .../dc/com/easyadapter/CategoryAdapter.kt | 6 ++++- .../dc/com/easyadapter/VideoActivity.java | 6 +++++ .../dc/com/library/EasyAdapter.java | 13 +++++++--- 6 files changed, 44 insertions(+), 6 deletions(-) diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index ea4779d78b8d7057df03f12d7492e9e55310c5f8..5564f60856031f9dc3e0909b902d6c1e34f7a689 100644 GIT binary patch delta 33 pcmX@Ya)f2V43^{Ch723$OlK6-&`;gIwnFH0C*w{IWtB@x6#&*m3~>Me delta 33 rcmV++0N($^1jGc8m;_(EXnnDqmjMw(d~BGW&7XJ0m^4LQ4!<*a`DG5H diff --git a/app/build.gradle b/app/build.gradle index dcfe5bb..16d41da 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,6 +44,7 @@ dependencies { implementation 'com.github.warkiz.widget:indicatorseekbar:2.1.0' implementation project(':library') + implementation 'com.android.support:cardview-v7:28.0.0' implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0' /*implementation "com.github.mkrupal09:EasyAdapter:9be4f31"*/ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c4f6809..4558652 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,8 +13,9 @@ android:supportsRtl="true" android:theme="@style/AppTheme"> @@ -22,6 +23,25 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapter.kt b/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapter.kt index c597cbf..3b296b4 100644 --- a/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapter.kt +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/CategoryAdapter.kt @@ -21,10 +21,13 @@ class CategoryAdapter(val enableSwipToDelete: Boolean) : } } - } override fun onBind(binding: InflaterCategoryBinding, model: Category) { + } + + override fun onBind(binding: InflaterCategoryBinding, model: Category, holder: EasyHolder?) { + super.onBind(binding, model, holder) binding.apply { tvName.text = model.name tvName.isSelected = model.isSelected @@ -41,5 +44,6 @@ class CategoryAdapter(val enableSwipToDelete: Boolean) : } Glide.with(binding.ivCategoryIcon).load("https://www.healthywage.com/wp-content/uploads/2015/11/Kristin-W-BeforeAfter2-540x345.jpg").into(binding.ivCategoryIcon); + helper.startSwipe(holder) } } \ No newline at end of file diff --git a/app/src/main/java/easyadapter/dc/com/easyadapter/VideoActivity.java b/app/src/main/java/easyadapter/dc/com/easyadapter/VideoActivity.java index 04d560b..0e40f55 100644 --- a/app/src/main/java/easyadapter/dc/com/easyadapter/VideoActivity.java +++ b/app/src/main/java/easyadapter/dc/com/easyadapter/VideoActivity.java @@ -4,6 +4,7 @@ import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.v4.app.NavUtils; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.WindowInsets; @@ -59,4 +60,9 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { public void onPrepared() { videoView.start(); } + + @Override + public void onBackPressed() { + NavUtils.navigateUpFromSameTask(this); + } } diff --git a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java index a7097d4..431d1c6 100644 --- a/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java +++ b/library/src/main/java/easyadapter/dc/com/library/EasyAdapter.java @@ -134,11 +134,15 @@ public void remove(M model) { notifyDataSetChanged(); } + public void removeOnly(M model) { + data.remove(model); + temp.remove(model); + } + public void removeOnly(int pos) { M model = data.get(pos); data.remove(model); temp.remove(model); - notifyDataSetChanged(); } public void addAll(List addAll, boolean deepCopy) { @@ -474,9 +478,12 @@ private class ProgressViewHolder extends EasyHolder { } } + public SwipeOpenItemTouchHelper helper = new SwipeOpenItemTouchHelper(new SwipeOpenItemTouchHelper.SimpleCallback( + SwipeOpenItemTouchHelper.START | SwipeOpenItemTouchHelper.END)); + public void enableSwipeAction(RecyclerView recyclerView) { - SwipeOpenItemTouchHelper helper = new SwipeOpenItemTouchHelper(new SwipeOpenItemTouchHelper.SimpleCallback( - SwipeOpenItemTouchHelper.START | SwipeOpenItemTouchHelper.END)); + + helper.attachToRecyclerView(recyclerView); } From 89d8eff650abcae7b091dbc55f7b2c802c254cc5 Mon Sep 17 00:00:00 2001 From: Krupal Date: Thu, 9 Sep 2021 17:32:16 +0530 Subject: [PATCH 18/23] Create codeql-analysis.yml --- .github/workflows/codeql-analysis.yml | 71 +++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000..1b9da92 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,71 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ master ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ master ] + schedule: + - cron: '43 13 * * 4' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'java' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 From b52ab49d8154fbe73f01bd8a8bbb4000b1a0aecd Mon Sep 17 00:00:00 2001 From: Krupal Date: Wed, 29 Jun 2022 02:09:22 +0530 Subject: [PATCH 19/23] Add files via upload --- images/easyadapter-01.png | Bin 0 -> 12609 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/easyadapter-01.png diff --git a/images/easyadapter-01.png b/images/easyadapter-01.png new file mode 100644 index 0000000000000000000000000000000000000000..e0fb6021a053fb3e7a5564ce08f0e2cd880e0289 GIT binary patch literal 12609 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 CcG8{z literal 0 HcmV?d00001 From 09053ef41a40320637e56b098186bf411457d2ba Mon Sep 17 00:00:00 2001 From: Krupal Date: Wed, 29 Jun 2022 02:09:57 +0530 Subject: [PATCH 20/23] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 1a736b6..9296561 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # EasyAdapter Based on [**Android Data Binding**](https://developer.android.com/topic/libraries/data-binding/index.html) + +![](images/logo.png) + ### Create your recyclerview adapter in just 3 lines. > RecyclerView is mostly used android widgets in the Android Project, for that you have to implement an Adapter which provides the items for the view. In most cases it require the same base logic, but require you to write everything again and again.so here is sollution for it. From 605b5a2ee6299b7e9ee2a1989261236f89aa475c Mon Sep 17 00:00:00 2001 From: Krupal Date: Wed, 29 Jun 2022 02:10:41 +0530 Subject: [PATCH 21/23] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9296561..ef90e8e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # EasyAdapter Based on [**Android Data Binding**](https://developer.android.com/topic/libraries/data-binding/index.html) -![](images/logo.png) +![](images/easyadapter-01.png) ### Create your recyclerview adapter in just 3 lines. From 47c5952639331d6b5b38295a53bb57761c31a2be Mon Sep 17 00:00:00 2001 From: Krupal Date: Thu, 14 Jul 2022 14:18:21 +0530 Subject: [PATCH 22/23] Update README.md --- README.md | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index ef90e8e..6b08ad3 100644 --- a/README.md +++ b/README.md @@ -23,19 +23,17 @@ CI](https://circleci.com/gh/mkrupal09/EasyAdapter.svg?style=svg)](https://circle Download -------- -Grab via Maven: -```xml - - com.dc.easyadapter - easyadapter - 2.0.3 - pom - -``` -or Gradle: -```groovy -implementation 'com.dc.easyadapter:easyadapter:2.0.3' -``` +app > build.gradle +implementation 'com.github.mkrupal09:EasyAdapter:v2.0.5' + +root > build.gradle, add jitpack.io maven url in allprojects>repositories + +allprojects { + repositories { + ... + maven { url 'https://jitpack.io' } + } + } To enable data binding ------------------------- @@ -49,18 +47,6 @@ android { } ``` -For Kotlin also add - ```groovy - dependencies{ - kapt 'com.android.databinding:compiler:3.1.2' -} - -apply plugin: 'kotlin-kapt' //Top at build.gradle -``` - - - - ## How? ``` java adapter = new EasyAdapter(R.layout.inflater_category) { From e1a255113056b84ce172742c77a36b6cc89d0aef Mon Sep 17 00:00:00 2001 From: Krupal Date: Thu, 14 Jul 2022 14:20:38 +0530 Subject: [PATCH 23/23] Update README.md --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6b08ad3..717e415 100644 --- a/README.md +++ b/README.md @@ -24,25 +24,28 @@ Download -------- app > build.gradle +```groovy implementation 'com.github.mkrupal09:EasyAdapter:v2.0.5' +``` root > build.gradle, add jitpack.io maven url in allprojects>repositories - +```groovy allprojects { repositories { ... maven { url 'https://jitpack.io' } } } +``` To enable data binding ------------------------- -inside app build.gradle +inside app build.gradle add buildFeatures block(if not) and add dataBinding flag as mentioned below ```groovy android { - dataBinding { - enabled = true + buildFeatures { + dataBinding true } } ```