diff --git a/adapterflowlayout/build.gradle b/adapterflowlayout/build.gradle index 9298f4e..50215e1 100644 --- a/adapterflowlayout/build.gradle +++ b/adapterflowlayout/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 24 - buildToolsVersion "24.0.2" + compileSdkVersion 25 + buildToolsVersion "25.0.0" defaultConfig { - minSdkVersion 9 - targetSdkVersion 24 + minSdkVersion 15 + targetSdkVersion 25 versionCode 1 versionName "1.0" } diff --git a/adapterlayout/build.gradle b/adapterlayout/build.gradle index bf271de..25bf6b5 100644 --- a/adapterlayout/build.gradle +++ b/adapterlayout/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 24 - buildToolsVersion "24.0.2" + compileSdkVersion 25 + buildToolsVersion "25.0.0" defaultConfig { - minSdkVersion 9 - targetSdkVersion 24 + minSdkVersion 15 + targetSdkVersion 25 versionCode 1 versionName "1.0" } @@ -23,7 +23,7 @@ android { dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') - compile 'com.android.support:recyclerview-v7:24.2.1' + compile 'com.android.support:recyclerview-v7:25.0.0' } apply from: 'https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.0.0/gradle-android-javadocs.gradle' diff --git a/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayout.java b/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayout.java new file mode 100644 index 0000000..660eba1 --- /dev/null +++ b/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayout.java @@ -0,0 +1,36 @@ +package com.commit451.adapterlayout; + +import android.support.v7.widget.RecyclerView; + +/** + * Provides access to some of the public API of AdapterLayout in a way that will be available for any given + * AdapterLayout + */ +public class AdapterLayout { + + /** + * Get the position in the AdapterLayout of the View holder. + * Use this instead of {@link RecyclerView.ViewHolder#getAdapterPosition()} + * + * @param viewHolder the holder to find the position of + * @return the index of the holder, or -1 if not found + */ + public static int getAdapterPosition(RecyclerView.ViewHolder viewHolder) { + return getPosition(viewHolder); + } + + /** + * Get the position in the AdapterLayout of the View holder. + * Use this instead of {@link RecyclerView.ViewHolder#getLayoutPosition()} + * + * @param viewHolder the holder to find the position of + * @return the index of the holder, or -1 if not found + */ + public static int getLayoutPosition(RecyclerView.ViewHolder viewHolder) { + return getPosition(viewHolder); + } + + private static int getPosition(RecyclerView.ViewHolder viewHolder) { + return (int) viewHolder.itemView.getTag(R.id.adapter_layout_list_position); + } +} diff --git a/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayoutDelegate.java b/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayoutDelegate.java index c7468c4..598be6e 100644 --- a/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayoutDelegate.java +++ b/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayoutDelegate.java @@ -92,7 +92,6 @@ public void setAdapter(@Nullable RecyclerView.Adapter adapter) { * * @return the adapter */ - @Nullable public RecyclerView.Adapter getAdapter() { return mAdapter; } @@ -125,8 +124,10 @@ private void addViewAt(int index) { private void addViewAt(int viewType, int index) { RecyclerView.ViewHolder viewHolder = mAdapter.onCreateViewHolder(mViewGroup, viewType); + //setting the lib to min 4.0 to avoid leaks from doing this viewHolder.itemView.setTag(R.id.adapter_layout_list_holder, viewHolder); viewHolder.itemView.setTag(R.id.adapter_layout_list_view_type, viewType); + viewHolder.itemView.setTag(R.id.adapter_layout_list_position, index); mViewGroup.addView(viewHolder.itemView); mAdapter.onBindViewHolder(viewHolder, index); } diff --git a/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLinearLayout.java b/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLinearLayout.java index 257c828..d9e7635 100644 --- a/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLinearLayout.java +++ b/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLinearLayout.java @@ -43,7 +43,6 @@ public void setAdapter(RecyclerView.Adapter adapter) { mAdapterLayoutDelegate.setAdapter(adapter); } - @Nullable public RecyclerView.Adapter getAdapter() { if (mAdapterLayoutDelegate != null) { return mAdapterLayoutDelegate.getAdapter(); diff --git a/adapterlayout/src/main/res/values/ids.xml b/adapterlayout/src/main/res/values/ids.xml index 78050a1..6ea27bb 100644 --- a/adapterlayout/src/main/res/values/ids.xml +++ b/adapterlayout/src/main/res/values/ids.xml @@ -2,4 +2,5 @@ + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index d1f13f4..824946e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 24 - buildToolsVersion "24.0.2" + compileSdkVersion 25 + buildToolsVersion "25.0.0" defaultConfig { applicationId "com.commit451.adapterlayout.sample" minSdkVersion 15 - targetSdkVersion 24 + targetSdkVersion 25 versionCode 1 versionName "1.0" } @@ -25,8 +25,8 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:24.2.1' - compile 'com.android.support:design:24.2.1' + compile 'com.android.support:appcompat-v7:25.0.0' + compile 'com.android.support:design:25.0.0' compile 'com.jakewharton:butterknife:7.0.1' compile project(':adapterlayout') compile project(':adapterflowlayout') diff --git a/app/src/main/java/com/commit451/adapterlayout/sample/CheeseAdapter.java b/app/src/main/java/com/commit451/adapterlayout/sample/CheeseAdapter.java index f62fad4..5862cca 100644 --- a/app/src/main/java/com/commit451/adapterlayout/sample/CheeseAdapter.java +++ b/app/src/main/java/com/commit451/adapterlayout/sample/CheeseAdapter.java @@ -4,6 +4,8 @@ import android.view.View; import android.view.ViewGroup; +import com.commit451.adapterlayout.AdapterLayout; + import java.util.ArrayList; import java.util.Collection; @@ -14,14 +16,6 @@ public class CheeseAdapter extends RecyclerView.Adapter { private Listener mListener; private ArrayList mValues; - private final View.OnClickListener mOnClickListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - int position = (int) v.getTag(R.id.list_position); - Cheese cheese = getItemAt(position); - mListener.onItemClicked(cheese); - } - }; public CheeseAdapter(Listener listener) { mListener = listener; @@ -73,8 +67,16 @@ public void clear() { @Override public CheeseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - CheeseViewHolder holder = CheeseViewHolder.inflate(parent); - holder.itemView.setOnClickListener(mOnClickListener); + final CheeseViewHolder holder = CheeseViewHolder.inflate(parent); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //Takes the place of holder.getAdapterPosition() + int position = AdapterLayout.getAdapterPosition(holder); + Cheese cheese = getItemAt(position); + mListener.onItemClicked(cheese); + } + }); return holder; } @@ -82,8 +84,6 @@ public CheeseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public void onBindViewHolder(final CheeseViewHolder holder, int position) { Cheese cheese = getItemAt(position); holder.bind(cheese); - holder.itemView.setTag(R.id.list_position, position); - holder.itemView.setTag(R.id.list_holder, holder); } @Override diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml deleted file mode 100644 index a9a91d4..0000000 --- a/app/src/main/res/values/ids.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/build.gradle b/build.gradle index 4d2df3f..b982efb 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.0' + classpath 'com.android.tools.build:gradle:2.2.2' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' classpath 'com.github.ben-manes:gradle-versions-plugin:0.13.0'