package com.bigfat.draggedviewpager.view;
import android.animation.LayoutTransition;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import java.util.List;
/**
* Created by yueban on 16/7/15.
*/
public class MDA_PageListLayout<T> extends LinearLayout {
private int itemLayoutResId;
private List<T> data;
private int dragPosition = -1;
private int pageIndex;//页面索引
public MDA_PageListLayout(Context context, int itemLayoutResId) {
this(context, null, itemLayoutResId);
}
public MDA_PageListLayout(Context context, AttributeSet attrs, int itemLayoutResId) {
this(context, attrs, 0, itemLayoutResId);
}
public MDA_PageListLayout(Context context, AttributeSet attrs, int defStyleAttr, int itemLayoutResId) {
super(context, attrs, defStyleAttr);
init();
this.itemLayoutResId = itemLayoutResId;
}
private void init() {
//设置布局方向
setOrientation(VERTICAL);
//设置动画
LayoutTransition layoutTransition = new LayoutTransition();
layoutTransition.setAnimator(LayoutTransition.APPEARING, null);
layoutTransition.setAnimator(LayoutTransition.DISAPPEARING, null);
setLayoutTransition(layoutTransition);
}
public void initView() {
removeAllViews();
if (data != null) {
for (int i = 0; i < data.size(); i++) {
View itemView = LayoutInflater.from(getContext()).inflate(itemLayoutResId, this, false);
getDraggedViewPager().getController().bindItemData(itemView, pageIndex, i);
itemView.setTag(pageIndex);
if (dragPosition == i) {
itemView.setVisibility(INVISIBLE);
}
addView(itemView);
}
}
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
initView();
}
public int getPageIndex() {
return pageIndex;
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
for (int i = 0; i < getChildCount(); i++) {
getChildAt(i).setTag(pageIndex);
}
}
public void notifyDataRemoved(int position) {
removeViewAt(position);
}
public void notifyDataInserted(View itemView, int position) {
getDraggedViewPager().getController().bindItemData(itemView, pageIndex, position);
addView(itemView, position);
}
public MDA_DraggedViewPager getDraggedViewPager() {
return getDraggedViewPager(this);
}
private MDA_DraggedViewPager getDraggedViewPager(View view) {
if (view.getParent() instanceof MDA_DraggedViewPager) {
return (MDA_DraggedViewPager) view.getParent();
} else {
return getDraggedViewPager((View) view.getParent());
}
}
public void setDragPosition(int dragPosition) {
this.dragPosition = dragPosition;
}
public void refreshVisibility() {
for (int i = 0; i < getChildCount(); i++) {
if (dragPosition == i) {
getChildAt(i).setVisibility(INVISIBLE);
} else {
getChildAt(i).setVisibility(VISIBLE);
}
}
}
}