Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 87 additions & 82 deletions src/net/mobctrl/viewholder/ParentViewHolder.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import net.mobctrl.interfaces.ItemDataClickListener;
import net.mobctrl.model.ItemData;
import net.mobctrl.treerecyclerview.R;

import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.annotation.TargetApi;
Expand All @@ -25,93 +26,97 @@
*/
public class ParentViewHolder extends BaseViewHolder {

public ImageView image;
public TextView text;
public ImageView expand;
public TextView count;
public RelativeLayout relativeLayout;
private int itemMargin;
public ImageView image;
public TextView text;
public ImageView expand;
public TextView count;
public RelativeLayout relativeLayout;
private int itemMargin;

public ParentViewHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.image);
text = (TextView) itemView.findViewById(R.id.text);
expand = (ImageView) itemView.findViewById(R.id.expand);
count = (TextView) itemView.findViewById(R.id.count);
relativeLayout = (RelativeLayout) itemView.findViewById(R.id.container);
itemMargin = itemView.getContext().getResources()
.getDimensionPixelSize(R.dimen.item_margin);
}
public ParentViewHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.image);
text = (TextView) itemView.findViewById(R.id.text);
expand = (ImageView) itemView.findViewById(R.id.expand);
count = (TextView) itemView.findViewById(R.id.count);
relativeLayout = (RelativeLayout) itemView.findViewById(R.id.container);
itemMargin = itemView.getContext().getResources()
.getDimensionPixelSize(R.dimen.item_margin);
}

public void bindView(final ItemData itemData, final int position,
final ItemDataClickListener imageClickListener) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) expand
.getLayoutParams();
params.leftMargin = itemMargin * itemData.getTreeDepth();
expand.setLayoutParams(params);
text.setText(itemData.getText());
if (itemData.isExpand()) {
expand.setRotation(45);
List<ItemData> children = itemData.getChildren();
if (children != null) {
count.setText(String.format("(%s)", itemData.getChildren()
.size()));
}
count.setVisibility(View.VISIBLE);
} else {
expand.setRotation(0);
count.setVisibility(View.GONE);
}
relativeLayout.setOnClickListener(new OnClickListener() {
public void bindView(final ItemData itemData, final int position,
final ItemDataClickListener imageClickListener) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) expand
.getLayoutParams();
params.leftMargin = itemMargin * itemData.getTreeDepth();
expand.setLayoutParams(params);
text.setText(itemData.getText());
if (itemData.isExpand()) {
expand.setRotation(45);
List<ItemData> children = itemData.getChildren();
if (children != null) {
count.setText(String.format("(%s)", itemData.getChildren()
.size()));
count.setVisibility(View.VISIBLE);
} else {
count.setVisibility(View.GONE);
}
} else {
expand.setRotation(0);
count.setVisibility(View.GONE);
}
relativeLayout.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if (imageClickListener != null) {
if (itemData.isExpand()) {
imageClickListener.onHideChildren(itemData);
itemData.setExpand(false);
rotationExpandIcon(45, 0);
count.setVisibility(View.GONE);
} else {
imageClickListener.onExpandChildren(itemData);
itemData.setExpand(true);
rotationExpandIcon(0, 45);
List<ItemData> children = itemData.getChildren();
if (children != null) {
count.setText(String.format("(%s)", itemData
.getChildren().size()));
}
count.setVisibility(View.VISIBLE);
}
}
@Override
public void onClick(View v) {
if (imageClickListener != null) {
if (itemData.isExpand()) {
imageClickListener.onHideChildren(itemData);
itemData.setExpand(false);
rotationExpandIcon(45, 0);
count.setVisibility(View.GONE);
} else {
imageClickListener.onExpandChildren(itemData);
itemData.setExpand(true);
rotationExpandIcon(0, 45);
List<ItemData> children = itemData.getChildren();
if (children != null) {
count.setText(String.format("(%s)", itemData
.getChildren().size()));
count.setVisibility(View.VISIBLE);
} else {
count.setVisibility(View.GONE);
}
}
}

}
});
image.setOnLongClickListener(new OnLongClickListener() {
}
});
image.setOnLongClickListener(new OnLongClickListener() {

@Override
public boolean onLongClick(View view) {
Toast.makeText(view.getContext(), "longclick",
Toast.LENGTH_SHORT).show();
return false;
}
});
}
@Override
public boolean onLongClick(View view) {
Toast.makeText(view.getContext(), "longclick",
Toast.LENGTH_SHORT).show();
return false;
}
});
}

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void rotationExpandIcon(float from, float to) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ValueAnimator valueAnimator = ValueAnimator.ofFloat(from, to);
valueAnimator.setDuration(150);
valueAnimator.setInterpolator(new DecelerateInterpolator());
valueAnimator.addUpdateListener(new AnimatorUpdateListener() {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void rotationExpandIcon(float from, float to) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ValueAnimator valueAnimator = ValueAnimator.ofFloat(from, to);
valueAnimator.setDuration(150);
valueAnimator.setInterpolator(new DecelerateInterpolator());
valueAnimator.addUpdateListener(new AnimatorUpdateListener() {

@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
expand.setRotation((Float) valueAnimator.getAnimatedValue());
}
});
valueAnimator.start();
}
}
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
expand.setRotation((Float) valueAnimator.getAnimatedValue());
}
});
valueAnimator.start();
}
}
}