{
+ public ApplicationTest() {
+ super(Application.class);
+ }
+}
\ No newline at end of file
diff --git a/library/src/main/AndroidManifest.xml b/library/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..0fec2a2
--- /dev/null
+++ b/library/src/main/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/library/src/main/java/me/zhangls/adapter/helper/BaseAdapterHelper.java b/library/src/main/java/me/zhangls/adapter/helper/BaseAdapterHelper.java
new file mode 100644
index 0000000..5cf873d
--- /dev/null
+++ b/library/src/main/java/me/zhangls/adapter/helper/BaseAdapterHelper.java
@@ -0,0 +1,485 @@
+/**
+ * Copyright 2013 Joan Zapata
+ *
+ * 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 me.zhangls.adapter.helper;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Paint;
+import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.text.util.Linkify;
+import android.util.SparseArray;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.AlphaAnimation;
+import android.widget.Adapter;
+import android.widget.AdapterView;
+import android.widget.Checkable;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.RatingBar;
+import android.widget.TextView;
+
+/**
+ * Allows an abstraction of the ViewHolder pattern.
+ *
+ *
+ * Usage
+ *
+ *
+ * return BaseAdapterHelper.get(context, convertView, parent, R.layout.item)
+ * .setText(R.id.tvName, contact.getName())
+ * .setText(R.id.tvEmails, contact.getEmails().toString())
+ * .setText(R.id.tvNumbers, contact.getNumbers().toString())
+ * .getView();
+ *
+ */
+public class BaseAdapterHelper {
+
+ /**
+ * Views indexed with their IDs
+ */
+ private final SparseArray views;
+
+ private final Context context;
+
+ private int position;
+
+ private View convertView;
+
+ /**
+ * Package private field to retain the associated user object and detect a change
+ */
+ Object associatedObject;
+
+ private BaseAdapterHelper(Context context, ViewGroup parent, int layoutId, int position) {
+ this.context = context;
+ this.position = position;
+ this.views = new SparseArray();
+ convertView = LayoutInflater.from(context) //
+ .inflate(layoutId, parent, false);
+ convertView.setTag(this);
+ }
+
+ /**
+ * This method is the only entry point to get a BaseAdapterHelper.
+ *
+ * @param context The current context.
+ * @param convertView The convertView arg passed to the getView() method.
+ * @param parent The parent arg passed to the getView() method.
+ * @return A BaseAdapterHelper instance.
+ */
+ public static BaseAdapterHelper get(Context context, View convertView, ViewGroup parent, int layoutId) {
+ return get(context, convertView, parent, layoutId, -1);
+ }
+
+ /**
+ * This method is package private and should only be used by QuickAdapter.
+ */
+ static BaseAdapterHelper get(Context context, View convertView, ViewGroup parent, int layoutId, int position) {
+ if (convertView == null) {
+ return new BaseAdapterHelper(context, parent, layoutId, position);
+ }
+
+ // Retrieve the existing helper and update its position
+ BaseAdapterHelper existingHelper = (BaseAdapterHelper) convertView.getTag();
+ existingHelper.position = position;
+ return existingHelper;
+ }
+
+ /**
+ * This method allows you to retrieve a view and perform custom
+ * operations on it, not covered by the BaseAdapterHelper.
+ * If you think it's a common use case, please consider creating
+ * a new issue at https://github.com/JoanZapata/base-adapter-helper/issues.
+ *
+ * @param viewId The id of the view you want to retrieve.
+ */
+ public T getView(int viewId) {
+ return retrieveView(viewId);
+ }
+
+ /**
+ * Will set the text of a TextView.
+ *
+ * @param viewId The view id.
+ * @param value The text to put in the text view.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setText(int viewId, String value) {
+ TextView view = retrieveView(viewId);
+ view.setText(value);
+ return this;
+ }
+
+ /**
+ * Will set the image of an ImageView from a resource id.
+ *
+ * @param viewId The view id.
+ * @param imageResId The image resource id.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setImageResource(int viewId, int imageResId) {
+ ImageView view = retrieveView(viewId);
+ view.setImageResource(imageResId);
+ return this;
+ }
+
+ /**
+ * Will set background color of a view.
+ *
+ * @param viewId The view id.
+ * @param color A color, not a resource id.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setBackgroundColor(int viewId, int color) {
+ View view = retrieveView(viewId);
+ view.setBackgroundColor(color);
+ return this;
+ }
+
+ /**
+ * Will set background of a view.
+ *
+ * @param viewId The view id.
+ * @param backgroundRes A resource to use as a background.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setBackgroundRes(int viewId, int backgroundRes) {
+ View view = retrieveView(viewId);
+ view.setBackgroundResource(backgroundRes);
+ return this;
+ }
+
+ /**
+ * Will set text color of a TextView.
+ *
+ * @param viewId The view id.
+ * @param textColor The text color (not a resource id).
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setTextColor(int viewId, int textColor) {
+ TextView view = retrieveView(viewId);
+ view.setTextColor(textColor);
+ return this;
+ }
+
+ /**
+ * Will set text color of a TextView.
+ *
+ * @param viewId The view id.
+ * @param textColorRes The text color resource id.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setTextColorRes(int viewId, int textColorRes) {
+ TextView view = retrieveView(viewId);
+ view.setTextColor(context.getResources().getColor(textColorRes));
+ return this;
+ }
+
+ /**
+ * Will set the image of an ImageView from a drawable.
+ *
+ * @param viewId The view id.
+ * @param drawable The image drawable.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setImageDrawable(int viewId, Drawable drawable) {
+ ImageView view = retrieveView(viewId);
+ view.setImageDrawable(drawable);
+ return this;
+ }
+
+
+ /**
+ * Add an action to set the image of an image view. Can be called multiple times.
+ */
+ public BaseAdapterHelper setImageBitmap(int viewId, Bitmap bitmap) {
+ ImageView view = retrieveView(viewId);
+ view.setImageBitmap(bitmap);
+ return this;
+ }
+
+ /**
+ * Add an action to set the alpha of a view. Can be called multiple times.
+ * Alpha between 0-1.
+ */
+ public BaseAdapterHelper setAlpha(int viewId, float value) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ retrieveView(viewId).setAlpha(value);
+ } else {
+ // Pre-honeycomb hack to set Alpha value
+ AlphaAnimation alpha = new AlphaAnimation(value, value);
+ alpha.setDuration(0);
+ alpha.setFillAfter(true);
+ retrieveView(viewId).startAnimation(alpha);
+ }
+ return this;
+ }
+
+ /**
+ * Set a view visibility to VISIBLE (true) or GONE (false).
+ *
+ * @param viewId The view id.
+ * @param visible True for VISIBLE, false for GONE.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setVisible(int viewId, boolean visible) {
+ View view = retrieveView(viewId);
+ view.setVisibility(visible ? View.VISIBLE : View.GONE);
+ return this;
+ }
+
+ /**
+ * Add links into a TextView.
+ *
+ * @param viewId The id of the TextView to linkify.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper linkify(int viewId) {
+ TextView view = retrieveView(viewId);
+ Linkify.addLinks(view, Linkify.ALL);
+ return this;
+ }
+
+ /**
+ * Apply the typeface to the given viewId, and enable subpixel rendering.
+ */
+ public BaseAdapterHelper setTypeface(int viewId, Typeface typeface) {
+ TextView view = retrieveView(viewId);
+ view.setTypeface(typeface);
+ view.setPaintFlags(view.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);
+ return this;
+ }
+
+ /**
+ * Apply the typeface to all the given viewIds, and enable subpixel rendering.
+ */
+ public BaseAdapterHelper setTypeface(Typeface typeface, int... viewIds) {
+ for (int viewId : viewIds) {
+ TextView view = retrieveView(viewId);
+ view.setTypeface(typeface);
+ view.setPaintFlags(view.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);
+ }
+ return this;
+ }
+
+ /**
+ * Sets the progress of a ProgressBar.
+ *
+ * @param viewId The view id.
+ * @param progress The progress.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setProgress(int viewId, int progress) {
+ ProgressBar view = retrieveView(viewId);
+ view.setProgress(progress);
+ return this;
+ }
+
+ /**
+ * Sets the progress and max of a ProgressBar.
+ *
+ * @param viewId The view id.
+ * @param progress The progress.
+ * @param max The max value of a ProgressBar.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setProgress(int viewId, int progress, int max) {
+ ProgressBar view = retrieveView(viewId);
+ view.setMax(max);
+ view.setProgress(progress);
+ return this;
+ }
+
+ /**
+ * Sets the range of a ProgressBar to 0...max.
+ *
+ * @param viewId The view id.
+ * @param max The max value of a ProgressBar.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setMax(int viewId, int max) {
+ ProgressBar view = retrieveView(viewId);
+ view.setMax(max);
+ return this;
+ }
+
+ /**
+ * Sets the rating (the number of stars filled) of a RatingBar.
+ *
+ * @param viewId The view id.
+ * @param rating The rating.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setRating(int viewId, float rating) {
+ RatingBar view = retrieveView(viewId);
+ view.setRating(rating);
+ return this;
+ }
+
+ /**
+ * Sets the rating (the number of stars filled) and max of a RatingBar.
+ *
+ * @param viewId The view id.
+ * @param rating The rating.
+ * @param max The range of the RatingBar to 0...max.
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setRating(int viewId, float rating, int max) {
+ RatingBar view = retrieveView(viewId);
+ view.setMax(max);
+ view.setRating(rating);
+ return this;
+ }
+
+ /**
+ * Sets the on click listener of the view.
+ *
+ * @param viewId The view id.
+ * @param listener The on click listener;
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setOnClickListener(int viewId, View.OnClickListener listener) {
+ View view = retrieveView(viewId);
+ view.setOnClickListener(listener);
+ return this;
+ }
+
+ /**
+ * Sets the on touch listener of the view.
+ *
+ * @param viewId The view id.
+ * @param listener The on touch listener;
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setOnTouchListener(int viewId, View.OnTouchListener listener) {
+ View view = retrieveView(viewId);
+ view.setOnTouchListener(listener);
+ return this;
+ }
+
+ /**
+ * Sets the on long click listener of the view.
+ *
+ * @param viewId The view id.
+ * @param listener The on long click listener;
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setOnLongClickListener(int viewId, View.OnLongClickListener listener) {
+ View view = retrieveView(viewId);
+ view.setOnLongClickListener(listener);
+ return this;
+ }
+
+ /**
+ * Sets the tag of the view.
+ *
+ * @param viewId The view id.
+ * @param tag The tag;
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setTag(int viewId, Object tag) {
+ View view = retrieveView(viewId);
+ view.setTag(tag);
+ return this;
+ }
+
+ /**
+ * Sets the tag of the view.
+ *
+ * @param viewId The view id.
+ * @param key The key of tag;
+ * @param tag The tag;
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setTag(int viewId, int key, Object tag) {
+ View view = retrieveView(viewId);
+ view.setTag(key, tag);
+ return this;
+ }
+
+ /**
+ * Sets the checked status of a checkable.
+ *
+ * @param viewId The view id.
+ * @param checked The checked status;
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setChecked(int viewId, boolean checked) {
+ Checkable view = (Checkable) retrieveView(viewId);
+ view.setChecked(checked);
+ return this;
+ }
+
+ /**
+ * Sets the adapter of a adapter view.
+ *
+ * @param viewId The view id.
+ * @param adapter The adapter;
+ * @return The BaseAdapterHelper for chaining.
+ */
+ public BaseAdapterHelper setAdapter(int viewId, Adapter adapter) {
+ AdapterView view = retrieveView(viewId);
+ view.setAdapter(adapter);
+ return this;
+ }
+
+ /**
+ * Retrieve the convertView
+ */
+ public View getView() {
+ return convertView;
+ }
+
+ /**
+ * Retrieve the overall position of the data in the list.
+ *
+ * @throws IllegalArgumentException If the position hasn't been set at the construction of the this helper.
+ */
+ public int getPosition() {
+ if (position == -1)
+ throw new IllegalStateException("Use BaseAdapterHelper constructor " +
+ "with position if you need to retrieve the position.");
+ return position;
+ }
+
+ @SuppressWarnings("unchecked")
+ private T retrieveView(int viewId) {
+ View view = views.get(viewId);
+ if (view == null) {
+ view = convertView.findViewById(viewId);
+ views.put(viewId, view);
+ }
+ return (T) view;
+ }
+
+ /**
+ * Retrieves the last converted object on this view.
+ */
+ public Object getAssociatedObject() {
+ return associatedObject;
+ }
+
+ /**
+ * Should be called during convert
+ */
+ public void setAssociatedObject(Object associatedObject) {
+ this.associatedObject = associatedObject;
+ }
+}
\ No newline at end of file
diff --git a/library/src/main/java/me/zhangls/adapter/helper/BaseQuickAdapter.java b/library/src/main/java/me/zhangls/adapter/helper/BaseQuickAdapter.java
new file mode 100644
index 0000000..1785c13
--- /dev/null
+++ b/library/src/main/java/me/zhangls/adapter/helper/BaseQuickAdapter.java
@@ -0,0 +1,197 @@
+/**
+ * Copyright 2013 Joan Zapata
+ *
+ * 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 me.zhangls.adapter.helper;
+
+import android.content.Context;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
+import android.widget.ProgressBar;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Abstraction class of a BaseAdapter in which you only need
+ * to provide the convert() implementation.
+ * Using the provided BaseAdapterHelper, your code is minimalist.
+ * @param The type of the items in the list.
+ */
+public abstract class BaseQuickAdapter extends BaseAdapter {
+
+ protected static final String TAG = BaseQuickAdapter.class.getSimpleName();
+
+ protected final Context context;
+
+ protected final int layoutResId;
+
+ protected final List data;
+
+ protected boolean displayIndeterminateProgress = false;
+
+ /**
+ * Create a QuickAdapter.
+ * @param context The context.
+ * @param layoutResId The layout resource id of each item.
+ */
+ public BaseQuickAdapter(Context context, int layoutResId) {
+ this(context, layoutResId, null);
+ }
+
+ /**
+ * Same as QuickAdapter#QuickAdapter(Context,int) but with
+ * some initialization data.
+ * @param context The context.
+ * @param layoutResId The layout resource id of each item.
+ * @param data A new list is created out of this one to avoid mutable list
+ */
+ public BaseQuickAdapter(Context context, int layoutResId, List data) {
+ this.data = data == null ? new ArrayList() : new ArrayList(data);
+ this.context = context;
+ this.layoutResId = layoutResId;
+ }
+
+ @Override
+ public int getCount() {
+ int extra = displayIndeterminateProgress ? 1 : 0;
+ return data.size() + extra;
+ }
+
+ @Override
+ public T getItem(int position) {
+ if (position >= data.size()) return null;
+ return data.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public int getViewTypeCount() {
+ return 2;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return position >= data.size() ? 1 : 0;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ if (getItemViewType(position) == 0) {
+ final H helper = getAdapterHelper(position, convertView, parent);
+ T item = getItem(position);
+ helper.setAssociatedObject(item);
+ convert(helper, item);
+ return helper.getView();
+ }
+
+ return createIndeterminateProgressView(convertView, parent);
+ }
+
+ private View createIndeterminateProgressView(View convertView, ViewGroup parent) {
+ if (convertView == null) {
+ FrameLayout container = new FrameLayout(context);
+ container.setForegroundGravity(Gravity.CENTER);
+ ProgressBar progress = new ProgressBar(context);
+ container.addView(progress);
+ convertView = container;
+ }
+ return convertView;
+ }
+
+ @Override
+ public boolean isEnabled(int position) {
+ return position < data.size();
+ }
+
+ public void add(T elem) {
+ data.add(elem);
+ notifyDataSetChanged();
+ }
+
+ public void addAll(List elem) {
+ data.addAll(elem);
+ notifyDataSetChanged();
+ }
+
+ public void set(T oldElem, T newElem) {
+ set(data.indexOf(oldElem), newElem);
+ }
+
+ public void set(int index, T elem) {
+ data.set(index, elem);
+ notifyDataSetChanged();
+ }
+
+ public void remove(T elem) {
+ data.remove(elem);
+ notifyDataSetChanged();
+ }
+
+ public void remove(int index) {
+ data.remove(index);
+ notifyDataSetChanged();
+ }
+
+ public void replaceAll(List elem) {
+ data.clear();
+ data.addAll(elem);
+ notifyDataSetChanged();
+ }
+
+ public boolean contains(T elem) {
+ return data.contains(elem);
+ }
+
+ /** Clear data list */
+ public void clear() {
+ data.clear();
+ notifyDataSetChanged();
+ }
+
+ public void showIndeterminateProgress(boolean display) {
+ if (display == displayIndeterminateProgress) return;
+ displayIndeterminateProgress = display;
+ notifyDataSetChanged();
+ }
+
+ /**
+ * Implement this method and use the helper to adapt the view to the given item.
+ * @param helper A fully initialized helper.
+ * @param item The item that needs to be displayed.
+ */
+ protected abstract void convert(H helper, T item);
+
+ /**
+ * You can override this method to use a custom BaseAdapterHelper in order to fit your needs
+ * @param position The position of the item within the adapter's data set of the item whose view we want.
+ * @param convertView The old view to reuse, if possible. Note: You should check that this view
+ * is non-null and of an appropriate type before using. If it is not possible to convert
+ * this view to display the correct data, this method can create a new view.
+ * Heterogeneous lists can specify their number of view types, so that this View is
+ * always of the right type (see {@link #getViewTypeCount()} and
+ * {@link #getItemViewType(int)}).
+ * @param parent The parent that this view will eventually be attached to
+ * @return An instance of BaseAdapterHelper
+ */
+ protected abstract H getAdapterHelper(int position, View convertView, ViewGroup parent);
+
+}
\ No newline at end of file
diff --git a/library/src/main/java/me/zhangls/adapter/helper/EnhancedQuickAdapter.java b/library/src/main/java/me/zhangls/adapter/helper/EnhancedQuickAdapter.java
new file mode 100644
index 0000000..7ab75f1
--- /dev/null
+++ b/library/src/main/java/me/zhangls/adapter/helper/EnhancedQuickAdapter.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright 2013 Joan Zapata
+ *
+ * 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 me.zhangls.adapter.helper;
+
+import android.content.Context;
+
+import java.util.List;
+
+/**
+ * Same as QuickAdapter, but adds an "itemChanged" boolean in the
+ * convert() method params, which allows you to know if you are
+ * adapting the new view to the same item or not, and therefore
+ * make a difference between dataset changed / dataset invalidated.
+ *
+ * Abstraction class of a BaseAdapter in which you only need
+ * to provide the convert() implementation.
+ * Using the provided BaseAdapterHelper, your code is minimalist.
+ * @param The type of the items in the list.
+ */
+public abstract class EnhancedQuickAdapter extends QuickAdapter {
+
+ /**
+ * Create a QuickAdapter.
+ * @param context The context.
+ * @param layoutResId The layout resource id of each item.
+ */
+ public EnhancedQuickAdapter(Context context, int layoutResId) {
+ super(context, layoutResId);
+ }
+
+ /**
+ * Same as QuickAdapter#QuickAdapter(Context,int) but with
+ * some initialization data.
+ * @param context The context.
+ * @param layoutResId The layout resource id of each item.
+ * @param data A new list is created out of this one to avoid mutable list
+ */
+ public EnhancedQuickAdapter(Context context, int layoutResId, List data) {
+ super(context, layoutResId, data);
+ }
+
+ @Override
+ protected final void convert(BaseAdapterHelper helper, T item) {
+ boolean itemChanged = helper.associatedObject == null || !helper.associatedObject.equals(item);
+ helper.associatedObject = item;
+ convert(helper, item, itemChanged);
+ }
+
+ /**
+ * @param helper The helper to use to adapt the view.
+ * @param item The item you should adapt the view to.
+ * @param itemChanged Whether or not the helper was bound to another object before.
+ */
+ protected abstract void convert(BaseAdapterHelper helper, T item, boolean itemChanged);
+}
diff --git a/library/src/main/java/me/zhangls/adapter/helper/QuickAdapter.java b/library/src/main/java/me/zhangls/adapter/helper/QuickAdapter.java
new file mode 100644
index 0000000..51de123
--- /dev/null
+++ b/library/src/main/java/me/zhangls/adapter/helper/QuickAdapter.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright 2013 Joan Zapata
+ *
+ * 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 me.zhangls.adapter.helper;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+
+import java.util.List;
+
+import static me.zhangls.adapter.helper.BaseAdapterHelper.get;
+
+
+/**
+ * Abstraction class of a BaseAdapter in which you only need
+ * to provide the convert() implementation.
+ * Using the provided BaseAdapterHelper, your code is minimalist.
+ * @param The type of the items in the list.
+ */
+public abstract class QuickAdapter extends BaseQuickAdapter {
+
+ /**
+ * Create a QuickAdapter.
+ * @param context The context.
+ * @param layoutResId The layout resource id of each item.
+ */
+ public QuickAdapter(Context context, int layoutResId) {
+ super(context, layoutResId);
+ }
+
+ /**
+ * Same as QuickAdapter#QuickAdapter(Context,int) but with
+ * some initialization data.
+ * @param context The context.
+ * @param layoutResId The layout resource id of each item.
+ * @param data A new list is created out of this one to avoid mutable list
+ */
+ public QuickAdapter(Context context, int layoutResId, List data) {
+ super(context, layoutResId, data);
+ }
+
+ protected BaseAdapterHelper getAdapterHelper(int position, View convertView, ViewGroup parent) {
+ return get(context, convertView, parent, layoutResId, position);
+ }
+
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..3d386ad
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1 @@
+include ':app', ':adapter-helper', ':library'