public class DirectoryNodeBinder extends TreeViewBinder<DirectoryNodeBinder.ViewHolder> {
@Override
public ViewHolder provideViewHolder(View itemView) {
return new ViewHolder(itemView);
}
@Override
public void bindView(ViewHolder holder, int position, TreeNode node) {
holder.ivArrow.setRotation(0);
holder.ivArrow.setImageResource(R.drawable.ic_keyboard_arrow_right_black_18dp);
int rotateDegree = node.isExpand() ? 90 : 0;
holder.ivArrow.setRotation(rotateDegree);
Dir dirNode = (Dir) node.getContent();
holder.tvName.setText(dirNode.dirName);
if (node.isLeaf())
holder.ivArrow.setVisibility(View.INVISIBLE);
else holder.ivArrow.setVisibility(View.VISIBLE);
}
@Override
public int getLayoutId() {
return R.layout.item_dir;
}
public static class ViewHolder extends TreeViewBinder.ViewHolder {
private ImageView ivArrow;
private TextView tvName;
public ViewHolder(View rootView) {
super(rootView);
this.ivArrow = (ImageView) rootView.findViewById(R.id.iv_arrow);//箭头图标
this.tvName = (TextView) rootView.findViewById(R.id.tv_name);
}
public ImageView getIvArrow() {
return ivArrow;
}
public TextView getTvName() {
return tvName;
}
}
}
这个是DirectoryNodeBinder类,
然后我在树形图里面想加上这个图标我这样写:
private void initNode() {
tempList = AppConst.getmSysProjectNavList();
ArrayList<SysProjectNav> roots = new ArrayList();
for (int i = 0; i < tempList.size(); i++) {
if (tempList.get(i).getSysProjectNave_Parent_ID() != null) {
if (tempList.get(i).getSysProjectNave_Parent_ID().equals(sysProjectNav.getSysProjectNave_ID())) {
roots.add(tempList.get(i));
}
}
}
getTreeData(roots, null);
LinearLayoutManager layoutManager = new LinearLayoutManager(ManagementActivity.this);
rv.setLayoutManager(layoutManager);
adapter = new TreeViewAdapter(nodes, Arrays.asList(new FileNodeBinder(), new DirectoryNodeBinder()));
adapter.setOnTreeNodeListener(new TreeViewAdapter.OnTreeNodeListener() {
@Override
public boolean onClick(TreeNode node, RecyclerView.ViewHolder holder) {
if (!node.isLeaf()) {
onToggle(!node.isExpand(), holder);
} else {
if (node.isRoot()) {//片断树中节点没有内容时使用
ToastUtils.showShort("暂无内容");
} else {
Object obContent = node.getContent();
Object obParnet = node.getParent().getContent();
// String fileName = ReflexObjectUtil.getValueByKey(obContent, "dirName").toString();
String Id = ReflexObjectUtil.getValueByKey(obContent, "ID").toString();
String parentName = ReflexObjectUtil.getValueByKey(obParnet, "dirName").toString();
//通过点击的文件名找出相应的对象
SysProjectNav sysProjectNav = null;
for (int i = 0; i < tempList.size(); i++) {
if (tempList.get(i).getID().equals(Id)) {
sysProjectNav = tempList.get(i);
break;
}
}
}
}
return false;
}
@Override
public void onToggle(boolean isExpand, RecyclerView.ViewHolder holder) {
DirectoryNodeBinder.ViewHolder dirViewHolder = (DirectoryNodeBinder.ViewHolder) holder;
final ImageView ivArrow = dirViewHolder.getIvArrow();
int rotateDegree = isExpand ? 90 : -90;
ivArrow.animate().rotationBy(rotateDegree)
.start();
}
});
rv.setAdapter(adapter);
swipeRefresh.setRefreshing(false);
swipeRefresh.setEnabled(false);
}
可是会报强制类型错误有人知道这是什么问题吗?或者怎么才能给树形图加上箭头