diff --git a/README.md b/README.md index 62b4922ad..d2db38207 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Beside being blazing fast, minimizing the code you need to write, it is also rea #Include in your project ##Using Maven ```javascript -compile('com.mikepenz:fastadapter:0.4.1-SNAPSHOT@aar') { +compile('com.mikepenz:fastadapter:0.4.2-SNAPSHOT@aar') { transitive = true } diff --git a/app/build.gradle b/app/build.gradle index 8e7a03308..ed68c2468 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "com.mikepenz.crossfader.app" minSdkVersion 11 targetSdkVersion 23 - versionCode 41 - versionName '0.4.1-SNAPSHOT' + versionCode 42 + versionName '0.4.2-SNAPSHOT' applicationVariants.all { variant -> variant.outputs.each { output -> diff --git a/gradle.properties b/gradle.properties index 2a325a1a7..7425726e4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,8 +19,8 @@ org.gradle.daemon=true org.gradle.parallel=true # Maven stuff -VERSION_NAME=0.4.1-SNAPSHOT -VERSION_CODE=41 +VERSION_NAME=0.4.2-SNAPSHOT +VERSION_CODE=42 GROUP=com.mikepenz POM_DESCRIPTION=FastAdapter Library diff --git a/library/build.gradle b/library/build.gradle index 3c00c7ee0..ca702926b 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -8,8 +8,8 @@ android { defaultConfig { minSdkVersion 10 targetSdkVersion 23 - versionCode 41 - versionName '0.4.1-SNAPSHOT' + versionCode 42 + versionName '0.4.2-SNAPSHOT' } buildTypes { release { diff --git a/library/src/main/java/com/mikepenz/fastadapter/FastAdapter.java b/library/src/main/java/com/mikepenz/fastadapter/FastAdapter.java index b9a789a4b..7289f2213 100644 --- a/library/src/main/java/com/mikepenz/fastadapter/FastAdapter.java +++ b/library/src/main/java/com/mikepenz/fastadapter/FastAdapter.java @@ -195,13 +195,15 @@ public void onClick(View v) { int pos = holder.getAdapterPosition(); if (pos != RecyclerView.NO_POSITION) { boolean consumed = false; - if (mOnClickListener != null) { - RelativeInfo relativeInfo = getRelativeInfo(pos); - consumed = mOnClickListener.onClick(v, relativeInfo.adapter, (IItem) relativeInfo.item, pos); - } - - if (!consumed && (!(mMultiSelect && mMultiSelectOnLongClick) || !mMultiSelect)) { - handleSelection(pos); + RelativeInfo relativeInfo = getRelativeInfo(pos); + if (relativeInfo.item != null && relativeInfo.item.isEnabled()) { + if (mOnClickListener != null) { + consumed = mOnClickListener.onClick(v, relativeInfo.adapter, relativeInfo.item, pos); + } + + if (!consumed && (!(mMultiSelect && mMultiSelectOnLongClick) || !mMultiSelect)) { + handleSelection(relativeInfo.item, pos); + } } } } @@ -213,13 +215,15 @@ public boolean onLongClick(View v) { int pos = holder.getAdapterPosition(); if (pos != RecyclerView.NO_POSITION) { boolean consumed = false; - if (mOnLongClickListener != null) { - RelativeInfo relativeInfo = getRelativeInfo(pos); - consumed = mOnLongClickListener.onLongClick(v, relativeInfo.adapter, (IItem) relativeInfo.item, pos); - } - - if (!consumed && (mMultiSelect && mMultiSelectOnLongClick)) { - handleSelection(pos); + RelativeInfo relativeInfo = getRelativeInfo(pos); + if (relativeInfo.item != null && relativeInfo.item.isEnabled()) { + if (mOnLongClickListener != null) { + consumed = mOnLongClickListener.onLongClick(v, relativeInfo.adapter, relativeInfo.item, pos); + } + + if (!consumed && (mMultiSelect && mMultiSelectOnLongClick)) { + handleSelection(relativeInfo.item, pos); + } } return consumed; } @@ -233,8 +237,8 @@ public boolean onTouch(View v, MotionEvent event) { if (mOnTouchListener != null) { int pos = holder.getAdapterPosition(); if (pos != RecyclerView.NO_POSITION) { - RelativeInfo relativeInfo = getRelativeInfo(pos); - return mOnTouchListener.onTouch(v, event, relativeInfo.adapter, (IItem) relativeInfo.item, pos); + RelativeInfo relativeInfo = getRelativeInfo(pos); + return mOnTouchListener.onTouch(v, event, relativeInfo.adapter, relativeInfo.item, pos); } } return false; @@ -310,8 +314,7 @@ public RelativeInfo getRelativeInfo(int position) { RelativeInfo relativeInfo = new RelativeInfo<>(); IAdapter adapter = getAdapter(position); if (adapter != null) { - Item item = (Item) adapter.getAdapterItem(position - getItemCount(adapter.getOrder())); - relativeInfo.item = item; + relativeInfo.item = (Item) adapter.getAdapterItem(position - getItemCount(adapter.getOrder())); relativeInfo.adapter = adapter; } return relativeInfo; @@ -474,8 +477,7 @@ public void toggleSelection(int position) { * * @param position the global position */ - private void handleSelection(int position) { - Item item = getItem(position); + private void handleSelection(Item item, int position) { if (!item.isSelectable()) { return; } diff --git a/library/src/main/java/com/mikepenz/fastadapter/helpers/UndoHelper.java b/library/src/main/java/com/mikepenz/fastadapter/helpers/UndoHelper.java index d899228d9..5a4ac86ec 100644 --- a/library/src/main/java/com/mikepenz/fastadapter/helpers/UndoHelper.java +++ b/library/src/main/java/com/mikepenz/fastadapter/helpers/UndoHelper.java @@ -83,28 +83,34 @@ public void onClick(View v) { } private void notifyCommit() { - if (mHistory.action == ACTION_REMOVE) { - mUndoListener.commitRemove(mHistory.position, mHistory.items); - mHistory = null; + if (mHistory != null) { + if (mHistory.action == ACTION_REMOVE) { + mUndoListener.commitRemove(mHistory.position, mHistory.items); + mHistory = null; + } } } private void doChange() { - if (mHistory.action == ACTION_REMOVE) { - if (mHistory.items.size() == 1) { - mItemAdapter.remove(mHistory.position); - } else { - mItemAdapter.removeItemRange(mHistory.position, mHistory.items.size()); + if (mHistory != null) { + if (mHistory.action == ACTION_REMOVE) { + if (mHistory.items.size() == 1) { + mItemAdapter.remove(mHistory.position); + } else { + mItemAdapter.removeItemRange(mHistory.position, mHistory.items.size()); + } } } } private void undoChange() { - if (mHistory.action == ACTION_REMOVE) { - if (mHistory.items.size() == 1) { - mItemAdapter.add(mHistory.position, mHistory.items.get(0)); - } else { - mItemAdapter.add(mHistory.position, mHistory.items); + if (mHistory != null) { + if (mHistory.action == ACTION_REMOVE) { + if (mHistory.items.size() == 1) { + mItemAdapter.add(mHistory.position, mHistory.items.get(0)); + } else { + mItemAdapter.add(mHistory.position, mHistory.items); + } } } mHistory = null; diff --git a/library/src/main/res/values/library_fastadapter_strings.xml b/library/src/main/res/values/library_fastadapter_strings.xml index daed3f2ec..608b5ff1f 100755 --- a/library/src/main/res/values/library_fastadapter_strings.xml +++ b/library/src/main/res/values/library_fastadapter_strings.xml @@ -10,7 +10,7 @@ The FastAdapter is here to simplify this process. You do not have to worry about the adapter anymore. Just write the logic for how your view should look like, and you are done. This library has a fast and highly optimized core which provides core functionality, most apps require. It also prevents common mistakes by taking away those steps from the devs. Beside being blazing fast, minimizing the code you need to write, it is also really easy to extend. Just provide another Adapter implementation, hook into the adapter chain, custom select / deselection behaviors. Everything is possible. ]]> - 0.4.1-SNAPSHOT + 0.4.2-SNAPSHOT https://github.com/mikepenz/FastAdapter apache_2_0 true