diff --git a/adapterflowlayout/src/main/java/com/commit451/adapterflowlayout/AdapterFlowLayout.java b/adapterflowlayout/src/main/java/com/commit451/adapterflowlayout/AdapterFlowLayout.java index e08e270..fd22af1 100644 --- a/adapterflowlayout/src/main/java/com/commit451/adapterflowlayout/AdapterFlowLayout.java +++ b/adapterflowlayout/src/main/java/com/commit451/adapterflowlayout/AdapterFlowLayout.java @@ -4,13 +4,12 @@ import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; -import android.widget.Adapter; import com.commit451.adapterlayout.AdapterLayoutDelegate; import com.wefika.flowlayout.FlowLayout; /** - * {@link com.wefika.flowlayout.FlowLayout} with {@link Adapter} support. + * {@link com.wefika.flowlayout.FlowLayout} with {@link android.support.v7.widget.RecyclerView.Adapter} support. */ public class AdapterFlowLayout extends FlowLayout { diff --git a/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayoutDelegate.java b/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayoutDelegate.java index e642785..2dd5102 100644 --- a/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayoutDelegate.java +++ b/adapterlayout/src/main/java/com/commit451/adapterlayout/AdapterLayoutDelegate.java @@ -155,31 +155,30 @@ private void recreateViews() { } int i; for (i = 0; i < mAdapter.getItemCount(); i++) { - - int viewType = mAdapter.getItemViewType(i); - //This means the view could already exist - if (i < mViewGroup.getChildCount()) { - View child = mViewGroup.getChildAt(i); - Integer savedViewType = (Integer) child.getTag(R.id.adapter_layout_list_view_type); - RecyclerView.ViewHolder savedViewHolder = (RecyclerView.ViewHolder) child.getTag(R.id.adapter_layout_list_holder); - - if (savedViewType != null && savedViewType == viewType && savedViewHolder != null) { - //perfect, it exists and is the right type, so just bind it - mAdapter.onBindViewHolder(savedViewHolder, i); + int viewType = mAdapter.getItemViewType(i); + //This means the view could already exist + if (i < mViewGroup.getChildCount()) { + View child = mViewGroup.getChildAt(i); + Integer savedViewType = (Integer) child.getTag(R.id.adapter_layout_list_view_type); + RecyclerView.ViewHolder savedViewHolder = (RecyclerView.ViewHolder) child.getTag(R.id.adapter_layout_list_holder); + + if (savedViewType != null && savedViewType == viewType && savedViewHolder != null) { + //perfect, it exists and is the right type, so just bind it + mAdapter.onBindViewHolder(savedViewHolder, i); + } else { + //it already existed, but something was wrong. So remove it and recreate it + addViewAt(viewType, i); + mViewGroup.removeView(child); + } } else { - //it already existed, but something was wrong. So remove it and recreate it - addViewAt(viewType, i); - mViewGroup.removeView(child); + //Creating a brand new view + addViewAt(viewType, i); } - } else { - //Creating a brand new view - addViewAt(viewType, i); - } } //Outside the bounds of the dataset, so remove it if (i < mViewGroup.getChildCount()) { - mViewGroup.removeViews(i, mViewGroup.getChildCount() - i); + mViewGroup.removeViews(i, mViewGroup.getChildCount() - i); } } } diff --git a/app/build.gradle b/app/build.gradle index dcc38ab..5025cd2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,7 +27,8 @@ dependencies { testCompile 'junit:junit:4.12' compile "com.android.support:appcompat-v7:$supportLibVersion" compile "com.android.support:design:$supportLibVersion" - compile 'com.jakewharton:butterknife:7.0.1' + compile 'com.jakewharton:butterknife:8.5.1' + annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' compile project(':adapterlayout') compile project(':adapterflowlayout') } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1965487..679f5cb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ - + diff --git a/app/src/main/java/com/commit451/adapterlayout/sample/CustomAdapterLayoutActivity.java b/app/src/main/java/com/commit451/adapterlayout/sample/AdapterFlowLayoutActivity.java similarity index 87% rename from app/src/main/java/com/commit451/adapterlayout/sample/CustomAdapterLayoutActivity.java rename to app/src/main/java/com/commit451/adapterlayout/sample/AdapterFlowLayoutActivity.java index 108c4dc..02348ac 100644 --- a/app/src/main/java/com/commit451/adapterlayout/sample/CustomAdapterLayoutActivity.java +++ b/app/src/main/java/com/commit451/adapterlayout/sample/AdapterFlowLayoutActivity.java @@ -10,15 +10,15 @@ import java.util.ArrayList; -import butterknife.Bind; +import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; -public class CustomAdapterLayoutActivity extends AppCompatActivity { +public class AdapterFlowLayoutActivity extends AppCompatActivity { - @Bind(R.id.toolbar) + @BindView(R.id.toolbar) Toolbar toolbar; - @Bind(R.id.adapter_layout) + @BindView(R.id.adapter_layout) AdapterFlowLayout adapterFlowLayout; CheeseAdapter adapter; @@ -26,7 +26,7 @@ public class CustomAdapterLayoutActivity extends AppCompatActivity { private CheeseAdapter.Listener listener = new CheeseAdapter.Listener() { @Override public void onItemClicked(Cheese cheese) { - Toast.makeText(CustomAdapterLayoutActivity.this, cheese.getName() + " clicked", Toast.LENGTH_SHORT) + Toast.makeText(AdapterFlowLayoutActivity.this, cheese.name + " clicked", Toast.LENGTH_SHORT) .show(); } }; diff --git a/app/src/main/java/com/commit451/adapterlayout/sample/Cheese.java b/app/src/main/java/com/commit451/adapterlayout/sample/Cheese.java index b821f3c..e63de11 100644 --- a/app/src/main/java/com/commit451/adapterlayout/sample/Cheese.java +++ b/app/src/main/java/com/commit451/adapterlayout/sample/Cheese.java @@ -5,23 +5,11 @@ */ public class Cheese { - int drawable; - String name; + public int drawable; + public String name; public Cheese(int drawable, String name) { this.drawable = drawable; this.name = name; } - - public int getDrawable() { - return drawable; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } } 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 6dfadc6..57f6c38 100644 --- a/app/src/main/java/com/commit451/adapterlayout/sample/CheeseAdapter.java +++ b/app/src/main/java/com/commit451/adapterlayout/sample/CheeseAdapter.java @@ -44,7 +44,7 @@ public void removeLast() { public void changeMiddle() { if (!values.isEmpty()) { int index = values.size()/2; - values.get(index).setName("Swiss"); + values.get(index).name = "Swiss"; notifyItemChanged(index); } } @@ -52,7 +52,7 @@ public void changeMiddle() { public void changeAll() { if (!values.isEmpty()) { for (Cheese cheese : values) { - cheese.setName("Swiss"); + cheese.name = "Swiss"; } notifyItemRangeChanged(0, values.size()); } diff --git a/app/src/main/java/com/commit451/adapterlayout/sample/CheeseViewHolder.java b/app/src/main/java/com/commit451/adapterlayout/sample/CheeseViewHolder.java index 847ef00..6c20508 100644 --- a/app/src/main/java/com/commit451/adapterlayout/sample/CheeseViewHolder.java +++ b/app/src/main/java/com/commit451/adapterlayout/sample/CheeseViewHolder.java @@ -25,6 +25,6 @@ public CheeseViewHolder(View view) { } public void bind(Cheese cheese) { - title.setText(cheese.getName()); + title.setText(cheese.name); } } diff --git a/app/src/main/java/com/commit451/adapterlayout/sample/MainActivity.java b/app/src/main/java/com/commit451/adapterlayout/sample/MainActivity.java index bf07533..4e8ab8d 100644 --- a/app/src/main/java/com/commit451/adapterlayout/sample/MainActivity.java +++ b/app/src/main/java/com/commit451/adapterlayout/sample/MainActivity.java @@ -13,27 +13,27 @@ import com.commit451.adapterlayout.AdapterLinearLayout; -import butterknife.Bind; +import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class MainActivity extends AppCompatActivity { - @Bind(R.id.root) + @BindView(R.id.root) ViewGroup root; - @Bind(R.id.toolbar) + @BindView(R.id.toolbar) Toolbar toolbar; - @Bind(R.id.adapter_layout) + @BindView(R.id.adapter_layout) AdapterLinearLayout adapterLinearLayout; - @Bind(R.id.animate_layout_changes) + @BindView(R.id.animate_layout_changes) CheckBox checkBoxAnimateLayoutChanges; CheeseAdapter adapter; - private CheeseAdapter.Listener mListener = new CheeseAdapter.Listener() { + private CheeseAdapter.Listener listener = new CheeseAdapter.Listener() { @Override public void onItemClicked(Cheese cheese) { - Snackbar.make(root, cheese.getName() + " clicked", Snackbar.LENGTH_SHORT) + Snackbar.make(root, cheese.name + " clicked", Snackbar.LENGTH_SHORT) .show(); } }; @@ -63,9 +63,16 @@ void onChangeAll() { adapter.changeAll(); } + @OnClick(R.id.set_to_5) + void onSetTo5Clicked() { + adapter.setData(Cheeses.getRandomCheeses(5)); + } + @OnClick(R.id.new_adapter) void onNewAdapterClicked() { - adapter.setData(Cheeses.getRandomCheeses(5)); + adapterLinearLayout.setAdapter(null); + adapter = new CheeseAdapter(listener); + adapterLinearLayout.setAdapter(adapter); } @Override @@ -79,19 +86,14 @@ protected void onCreate(Bundle savedInstanceState) { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { - case R.id.action_custom_adapter_layout: - startActivity(new Intent(MainActivity.this, CustomAdapterLayoutActivity.class)); + case R.id.action_adapter_flow_layout: + startActivity(new Intent(MainActivity.this, AdapterFlowLayoutActivity.class)); return true; } return false; } }); - adapter = new CheeseAdapter(new CheeseAdapter.Listener() { - @Override - public void onItemClicked(Cheese cheese) { - - } - }); + adapter = new CheeseAdapter(listener); adapterLinearLayout.setAdapter(adapter); checkBoxAnimateLayoutChanges.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @@ -106,7 +108,5 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { } }); checkBoxAnimateLayoutChanges.setChecked(true); - - adapter.setData(Cheeses.getRandomCheeses(10)); } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 3d24b79..77a1ac8 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -76,6 +76,12 @@ android:layout_height="wrap_content" android:text="Change All" /> +