package zaihuishou.com.expandablerecyclerview;
import com.zaihuishou.expandablerecycleradapter.model.ExpandableListItem;
import com.zaihuishou.expandablerecycleradapter.viewholder.AbstractExpandableAdapterItem;
import android.animation.ObjectAnimator;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class DepartmentItem extends AbstractExpandableAdapterItem implements View.OnClickListener {
private TextView mName;
private ImageView mArrow;
private TextView mExpand;
@Override
public int getLayoutResId() {
return R.layout.item_department;
}
@Override
public void onBindViews(View root) {
mName = (TextView) root.findViewById(R.id.tv_name);
mArrow = (ImageView) root.findViewById(R.id.iv_arrow);
mExpand = (TextView) root.findViewById(R.id.tv_expand);
mExpand.setOnClickListener(this);
}
@Override
public void onExpansionToggled(boolean expanded) {
float start, target;
if (expanded) {
mExpand.setText("unexpand");
start = 0f;
target = 90f;
} else {
mExpand.setText("expand");
start = 90f;
target = 0f;
}
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(mArrow, View.ROTATION, start, target);
objectAnimator.setDuration(300);
objectAnimator.start();
}
@Override
public void onSetViews() {
mArrow.setVisibility(View.GONE);
}
@Override
public void onUpdateViews(Object model, int position) {
super.onUpdateViews(model, position);
onSetViews();
Department department = (Department) model;
mName.setText(department.name);
ExpandableListItem parentListItem = (ExpandableListItem) model;
List<?> childItemList = parentListItem.getChildItemList();
if (childItemList != null && !childItemList.isEmpty()) {
mArrow.setVisibility(View.VISIBLE);
mExpand.setText(parentListItem.isExpanded() ? "unexpand" : "expand");
} else mExpand.setText("expand");
}
@Override
public void onClick(View view) {
/**
* control item expand and unexpand
*/
if (getExpandableListItem() != null && getExpandableListItem().getChildItemList() != null) {
if (getExpandableListItem().isExpanded()) {
collapseView();
} else {
expandView();
}
}
}
}