-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Maxime Jallu
committed
Sep 26, 2017
1 parent
078c705
commit b0280f5
Showing
15 changed files
with
542 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
52 changes: 52 additions & 0 deletions
52
adapter/src/main/java/com/android/jmaxime/adapters/CheckableAdapter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package com.android.jmaxime.adapters; | ||
|
||
import com.android.jmaxime.factory.ViewHolderFactory; | ||
import com.android.jmaxime.interfaces.ViewCheckableCallback; | ||
import com.android.jmaxime.viewholder.JRecyclerViewHolder; | ||
|
||
import java.util.HashMap; | ||
import java.util.List; | ||
|
||
/** | ||
* @author Maxime Jallu | ||
* @since 26/09/2017 | ||
* <p> | ||
* Use this Class for : <br/> | ||
* {DOCUMENTATION} | ||
*/ | ||
public class CheckableAdapter<T> extends RecyclerAdapter<T> implements ViewCheckableCallback<T> { | ||
|
||
private HashMap<String, Boolean> mCheckedMap = new HashMap<>(); | ||
|
||
public CheckableAdapter(Class<? extends JRecyclerViewHolder<T>> viewHolderType) { | ||
super(viewHolderType); | ||
setCommunication(this); | ||
} | ||
|
||
public CheckableAdapter(List<T> TList, ViewHolderFactory<T> factory) { | ||
super(TList, factory); | ||
setCommunication(this); | ||
} | ||
|
||
/** | ||
* Clear map and add item to selected | ||
* add selected position to sparseArray | ||
* | ||
* @param position | ||
*/ | ||
public void setSelected(int position) { | ||
/*si plusieurs cellules sont checked alors on fera un notify complet*/ | ||
mCheckedMap.clear(); | ||
put(String.valueOf(getItem(position).hashCode()), true); | ||
notifyDataSetChanged(); | ||
} | ||
|
||
@Override public boolean isChecked(T item) { | ||
String hashString = String.valueOf(item.hashCode()); | ||
return mCheckedMap.containsKey(hashString) ? mCheckedMap.get(hashString) : false; | ||
} | ||
|
||
@Override public void put(String key, boolean value) { | ||
mCheckedMap.put(key, value); | ||
} | ||
} |
64 changes: 64 additions & 0 deletions
64
adapter/src/main/java/com/android/jmaxime/adapters/EasyPagerAdapter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
package com.android.jmaxime.adapters; | ||
|
||
import android.support.v4.view.PagerAdapter; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
|
||
import com.android.jmaxime.factory.ViewHolderFactory; | ||
import com.android.jmaxime.interfaces.IBaseCommunication; | ||
import com.android.jmaxime.viewholder.JRecyclerViewHolder; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
/** | ||
* @author Maxime Jallu | ||
* @since 26/09/2017 | ||
* <p> | ||
* Use this Class for : <br/> | ||
* {DOCUMENTATION} | ||
*/ | ||
public class EasyPagerAdapter<T> extends PagerAdapter { | ||
|
||
private final List<T> mItems; | ||
private final ViewHolderFactory<T> mFactory; | ||
|
||
public EasyPagerAdapter(Class<? extends JRecyclerViewHolder<T>> viewHolder) { | ||
this(new ArrayList<>(), viewHolder); | ||
} | ||
|
||
public EasyPagerAdapter(List<T> items, Class<? extends JRecyclerViewHolder<T>> viewHolder) { | ||
this(items, viewHolder, null); | ||
} | ||
|
||
public EasyPagerAdapter(List<T> items, Class<? extends JRecyclerViewHolder<T>> viewHolder, IBaseCommunication<T> callback) { | ||
mItems = items; | ||
mFactory = new ViewHolderFactory<>(viewHolder, callback); | ||
} | ||
|
||
@Override public Object instantiateItem(ViewGroup container, int position) { | ||
JRecyclerViewHolder<T> vh = mFactory.createVH(container, 0); | ||
vh.bind(mItems.get(position)); | ||
container.addView(vh.itemView); | ||
return vh.itemView; | ||
} | ||
|
||
@Override | ||
public boolean isViewFromObject(View view, Object object) { | ||
return view == object; | ||
} | ||
|
||
@Override public int getCount() { | ||
return mItems.size(); | ||
} | ||
|
||
@Override | ||
public void destroyItem(ViewGroup container, int position, Object object) { | ||
container.removeView((View) object); | ||
} | ||
|
||
public void addAll(List<T> medias) { | ||
mItems.addAll(medias); | ||
notifyDataSetChanged(); | ||
} | ||
} |
217 changes: 217 additions & 0 deletions
217
adapter/src/main/java/com/android/jmaxime/adapters/RecyclerAdapter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,217 @@ | ||
package com.android.jmaxime.adapters; | ||
|
||
import android.support.annotation.NonNull; | ||
import android.support.annotation.Nullable; | ||
import android.support.v7.widget.RecyclerView; | ||
import android.view.ViewGroup; | ||
|
||
import com.android.jmaxime.factory.ViewHolderFactory; | ||
import com.android.jmaxime.interfaces.IAdapterChanged; | ||
import com.android.jmaxime.interfaces.IBaseCommunication; | ||
import com.android.jmaxime.interfaces.IViewType; | ||
import com.android.jmaxime.viewholder.JRecyclerViewHolder; | ||
|
||
import java.security.AccessControlException; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
/** | ||
* @author Maxime Jallu | ||
* @since 03/05/2017 | ||
* <p> | ||
* Create for CubeInStore - Android (Decathlon) | ||
* <p> | ||
* Use this Class for : <br/> | ||
* ... {DOCUMENTATION} | ||
*/ | ||
public class RecyclerAdapter<T> extends RecyclerView.Adapter<JRecyclerViewHolder<T>> { | ||
|
||
private List<T> mTList; | ||
private ViewHolderFactory<T> mFactory; | ||
private IAdapterChanged mAdapterChanged; | ||
|
||
public RecyclerAdapter() { | ||
mTList = new ArrayList<>(); | ||
} | ||
|
||
public RecyclerAdapter(ViewHolderFactory<T> factory) { | ||
this(new ArrayList<>(), factory); | ||
} | ||
|
||
public RecyclerAdapter(Class<? extends JRecyclerViewHolder<T>> viewHolderType) { | ||
this(new ArrayList<>(), viewHolderType, null); | ||
} | ||
|
||
public RecyclerAdapter(Class<? extends JRecyclerViewHolder<T>> viewHolderType, @Nullable IBaseCommunication callback) { | ||
this(new ArrayList<>(), viewHolderType, callback); | ||
} | ||
|
||
public RecyclerAdapter(List<T> TList, Class<? extends JRecyclerViewHolder<T>> viewHolderType) { | ||
this(TList, viewHolderType, null); | ||
} | ||
|
||
public RecyclerAdapter(List<T> TList, Class<? extends JRecyclerViewHolder<T>> viewHolderType, @Nullable IBaseCommunication callback) { | ||
this(TList, new ViewHolderFactory<>(viewHolderType, callback)); | ||
} | ||
|
||
|
||
public RecyclerAdapter(List<T> TList, ViewHolderFactory<T> factory) { | ||
mTList = TList; | ||
mFactory = factory; | ||
} | ||
|
||
public void setFactory(ViewHolderFactory<T> factory) { | ||
mFactory = factory; | ||
} | ||
|
||
@Override | ||
public JRecyclerViewHolder<T> onCreateViewHolder(ViewGroup parent, int viewType) { | ||
if (mFactory == null) { | ||
throw new AccessControlException("mFactory is not instancied. thanks use setFactory() method."); | ||
} | ||
|
||
return mFactory.createVH(parent, viewType); | ||
} | ||
|
||
|
||
@Override | ||
public void onBindViewHolder(JRecyclerViewHolder<T> holder, int position) { | ||
holder.setItem(getItem(position)); | ||
holder.setBound(false); | ||
holder.bind(holder.getItem()); | ||
holder.setBound(true); | ||
} | ||
|
||
@Override | ||
public int getItemCount() { | ||
return mTList != null ? mTList.size() : 0; | ||
} | ||
|
||
/** | ||
* Get Item | ||
* | ||
* @param position position founded | ||
* @return instance to position | ||
*/ | ||
public T getItem(int position) { | ||
return mTList.get(position); | ||
} | ||
|
||
@Override | ||
public int getItemViewType(int position) { | ||
if (getItem(position) != null && getItem(position) instanceof IViewType) { | ||
return ((IViewType) getItem(position)).getItemViewType(); | ||
} | ||
return super.getItemViewType(position); | ||
} | ||
|
||
public void putViewType(int viewType, Class<? extends JRecyclerViewHolder<T>> viewHolder){ | ||
mFactory.putViewType(viewType, viewHolder); | ||
} | ||
|
||
public boolean contains(final T obj) { | ||
return mTList.contains(obj); | ||
} | ||
|
||
protected void callChangedListener() { | ||
if (mAdapterChanged != null) { | ||
mAdapterChanged.onItemCountChange(getItemCount()); | ||
} | ||
} | ||
|
||
public void setOnAdapterChangedListener(IAdapterChanged adapterChanged) { | ||
mAdapterChanged = adapterChanged; | ||
} | ||
|
||
public void setCommunication(IBaseCommunication communication) { | ||
mFactory.setCommunication(communication); | ||
notifyDataSetChanged(); | ||
} | ||
|
||
/** | ||
* Inserts the specified element at the specified position in this list (optional operation). | ||
* Shifts the element currently at that position (if any) and any subsequent elements to the right (adds one to their indices). | ||
* | ||
* @param item element to be inserted | ||
*/ | ||
public void addItem(T item) { | ||
if (mTList != null) { | ||
mTList.add(item); | ||
notifyItemInserted(mTList.size()); | ||
} | ||
} | ||
|
||
/** | ||
* Inserts the specified element at the specified position in this list (optional operation). | ||
* Shifts the element currently at that position (if any) and any subsequent elements to the right (adds one to their indices). | ||
* | ||
* @param item element to be inserted | ||
* @param position index at which the specified element is to be inserted | ||
*/ | ||
public void addItem(T item, int position) { | ||
if (mTList != null) { | ||
position = Math.min(position, mTList.size()); | ||
mTList.add(position, item); | ||
notifyItemInserted(position); | ||
} | ||
} | ||
|
||
/** | ||
* Inserts the specified element at the specified position in this list (optional operation). | ||
* Shifts the element currently at that position (if any) and any subsequent elements to the right (adds one to their indices). | ||
* | ||
* @param collection elements to be inserted | ||
*/ | ||
public void addAll(List<T> collection) { | ||
if (mTList != null) { | ||
mTList.addAll(collection); | ||
int start = Math.max(0, (mTList.size() - collection.size()) - 1); | ||
notifyItemRangeInserted(start, collection.size()); | ||
} | ||
} | ||
|
||
/** | ||
* Inserts the specified element at the specified position in this list (optional operation). | ||
* Shifts the element currently at that position (if any) and any subsequent elements to the right (adds one to their indices). | ||
* | ||
* @param item the element to be removed | ||
*/ | ||
public void removeItem(T item) { | ||
removeItem(getTList().indexOf(item)); | ||
} | ||
|
||
/** | ||
* Inserts the specified element at the specified position in this list (optional operation). | ||
* Shifts the element currently at that position (if any) and any subsequent elements to the right (adds one to their indices). | ||
* | ||
* @param position the index of the element to be removed | ||
*/ | ||
public void removeItem(int position) { | ||
if (mTList != null && position > -1 && position < mTList.size()) { | ||
mTList.remove(position); | ||
notifyItemRemoved(position); | ||
} | ||
} | ||
|
||
/** | ||
* Set new list items and notifyDataSetChanged() | ||
* | ||
* @param list new instance items list for bind views | ||
* @link notifyDataSetChanged | ||
*/ | ||
public void updateItems(@NonNull List<T> list) { | ||
mTList = list; | ||
notifyDataSetChanged(); | ||
} | ||
|
||
/** | ||
* @return instance items list | ||
*/ | ||
public List<T> getTList() { | ||
return mTList; | ||
} | ||
|
||
public boolean isEmpty() { | ||
return mTList == null || mTList.isEmpty(); | ||
} | ||
} |
Oops, something went wrong.