package com.anarchy.classify.simple;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.anarchy.classify.R;
import java.util.ArrayList;
import java.util.List;
/**
*
* Date: 16/6/7 11:55
* Author: rsshinide38@163.com
*
*/
public abstract class SimpleAdapter extends PrimitiveSimpleAdapter, VH> {
protected List> mData;
public SimpleAdapter(List> data) {
mData = data;
}
@SuppressWarnings("unchecked")
@Override
protected VH onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.simple_item, parent, false);
return (VH) new ViewHolder(view);
}
/**
* 返回主层级数量
*
* @return
*/
@Override
protected int getItemCount() {
if (mData == null) return 0;
return mData.size();
}
/**
* 副层级的数量,用于主层级上的显示效果
*
* @return
*/
@Override
protected int getSubItemCount(int parentPosition) {
if(mData == null) return 0;
return mData.get(parentPosition).size();
}
@Override
protected List getSubSource(int parentPosition) {
return mData.get(parentPosition);
}
@Override
protected boolean canExplodeItem(int position, View pressedView) {
if (position < mData.size() && mData.get(position).size() > 1) {
return true;
}
return false;
}
/**
* 在主层级触发move事件 在这里进行数据改变
*
* @param selectedPosition 当前选择的item位置
* @param targetPosition 要移动到的位置
*/
@Override
protected void onMove(int selectedPosition, int targetPosition) {
List list = mData.remove(selectedPosition);
mData.add(targetPosition, list);
}
@Override
protected void onSubMove(List ts, int selectedPosition, int targetPosition) {
ts.add(targetPosition, ts.remove(selectedPosition));
}
@Override
protected int onLeaveSubRegion(int parentPosition,List ts, int selectedPosition) {
List list = new ArrayList<>();
list.add(ts.remove(selectedPosition));
mData.add(list);
return mData.size() - 1;
}
/**
* 两个选项能否合并
*
* @param selectPosition
* @param targetPosition
* @return
*/
@Override
protected boolean canMergeItem(int selectPosition, int targetPosition) {
List currentSelected = mData.get(selectPosition);
return currentSelected.size() < 2;
}
/**
* 合并数据处理
*
* @param selectedPosition
* @param targetPosition
*/
@Override
protected void onMerged(int selectedPosition, int targetPosition) {
mData.get(targetPosition).add(mData.get(selectedPosition).get(0));
mData.remove(selectedPosition);
}
/**
* 主层级数据绑定
*
* @param holder
* @param position
*/
@Override
protected void onBindMainViewHolder(VH holder, int position) {
}
/**
* 副层级数据绑定
*
* @param holder
* @param mainPosition
* @param subPosition
*/
@Override
protected void onBindSubViewHolder(VH holder, int mainPosition, int subPosition) {
}
public static class ViewHolder extends PrimitiveSimpleAdapter.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
}
}
}