diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..681f41a
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 31a27b7..0bcd982 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -13,6 +13,7 @@
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 3be1ace..2071cbc 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -27,17 +27,7 @@
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 17a0186..bef93e1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,5 +1,9 @@
apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+
android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
@@ -20,13 +24,17 @@ android {
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
- compile 'com.android.support:appcompat-v7:26.1.0'
- compile 'com.android.support:recyclerview-v7:26.1.0'
- testCompile 'junit:junit:4.12'
- compile project(path: ':recyclertreeview-lib')
+
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+
+ implementation 'com.android.support:appcompat-v7:26.1.0'
+ implementation 'com.android.support:recyclerview-v7:26.1.0'
+ testImplementation 'junit:junit:4.12'
+ implementation project(path: ':recyclertreeview-lib')
+ implementation 'com.google.code.gson:gson:2.8.5'
// compile 'com.github.TellH:RecyclerTreeView:1.2.0'
}
diff --git a/app/src/main/java/tellh/com/recyclertreeview/MainActivity.java b/app/src/main/java/tellh/com/recyclertreeview/MainActivity.java
index 5fc3861..5f82da1 100644
--- a/app/src/main/java/tellh/com/recyclertreeview/MainActivity.java
+++ b/app/src/main/java/tellh/com/recyclertreeview/MainActivity.java
@@ -2,121 +2,155 @@
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.ImageView;
+
+import com.google.gson.Gson;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import tellh.com.recyclertreeview.bean.Dir;
-import tellh.com.recyclertreeview.bean.File;
-import tellh.com.recyclertreeview.viewbinder.DirectoryNodeBinder;
-import tellh.com.recyclertreeview.viewbinder.FileNodeBinder;
-import tellh.com.recyclertreeview_lib.TreeNode;
-import tellh.com.recyclertreeview_lib.TreeViewAdapter;
+import tellh.com.recyclertreeview.bean.Folder;
+import tellh.com.recyclertreeview.view.SelectTreeView;
public class MainActivity extends AppCompatActivity {
- private RecyclerView rv;
- private TreeViewAdapter adapter;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- initView();
- initData();
- }
-
- private void initData() {
- List nodes = new ArrayList<>();
- TreeNode app = new TreeNode<>(new Dir("app"));
- nodes.add(app);
- app.addChild(
- new TreeNode<>(new Dir("manifests"))
- .addChild(new TreeNode<>(new File("AndroidManifest.xml")))
- );
- app.addChild(
- new TreeNode<>(new Dir("java")).addChild(
- new TreeNode<>(new Dir("tellh")).addChild(
- new TreeNode<>(new Dir("com")).addChild(
- new TreeNode<>(new Dir("recyclertreeview"))
- .addChild(new TreeNode<>(new File("Dir")))
- .addChild(new TreeNode<>(new File("DirectoryNodeBinder")))
- .addChild(new TreeNode<>(new File("File")))
- .addChild(new TreeNode<>(new File("FileNodeBinder")))
- .addChild(new TreeNode<>(new File("TreeViewBinder")))
- )
- )
- )
- );
- TreeNode res = new TreeNode<>(new Dir("res"));
- nodes.add(res);
- res.addChild(
- new TreeNode<>(new Dir("layout")).lock() // lock this TreeNode
- .addChild(new TreeNode<>(new File("activity_main.xml")))
- .addChild(new TreeNode<>(new File("item_dir.xml")))
- .addChild(new TreeNode<>(new File("item_file.xml")))
- );
- res.addChild(
- new TreeNode<>(new Dir("mipmap"))
- .addChild(new TreeNode<>(new File("ic_launcher.png")))
- );
-
- rv.setLayoutManager(new LinearLayoutManager(this));
- adapter = new TreeViewAdapter(nodes, Arrays.asList(new FileNodeBinder(), new DirectoryNodeBinder()));
- // whether collapse child nodes when their parent node was close.
-// adapter.ifCollapseChildWhileCollapseParent(true);
- adapter.setOnTreeNodeListener(new TreeViewAdapter.OnTreeNodeListener() {
- @Override
- public boolean onClick(TreeNode node, RecyclerView.ViewHolder holder) {
- if (!node.isLeaf()) {
- //Update and toggle the node.
- onToggle(!node.isExpand(), holder);
-// if (!node.isExpand())
-// adapter.collapseBrotherNode(node);
- }
- 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);
- }
-
- private void initView() {
- rv = (RecyclerView) findViewById(R.id.rv);
- }
+ SelectTreeView selectTreeView = findViewById(R.id.select_tree_view);
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.menu_main, menu);
- return true;
- }
+ String str = "{\n" +
+ "\t\"children\": [{\n" +
+ "\t\t\"children\": [],\n" +
+ "\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\"name\": \"测试子部门\",\n" +
+ "\t\t\"itemList\": [{\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"2edce931c95c4dfa85f74e63ebaf62c5\",\n" +
+ "\t\t\t\"name\": \"泉州-小电65656\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"3e54fc5bd8a24a1f8589c162bc1260e6\",\n" +
+ "\t\t\t\"name\": \"2422343\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"57b07f3fc3454ec7b8aaa68d5be33712\",\n" +
+ "\t\t\t\"name\": \"泉州-小电3425456\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"5c56f6cfb62b4d9195b2af51f9685d7f\",\n" +
+ "\t\t\t\"name\": \"泉州-东海A10066\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"799f3465754247d9b962de57ebc67758\",\n" +
+ "\t\t\t\"name\": \"闽C747474\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"963aef4009754321b4f61653dbfc8e0d\",\n" +
+ "\t\t\t\"name\": \"86588335\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"afa63486c2bc42ec80963ec84923b4b0\",\n" +
+ "\t\t\t\"name\": \"泉州-小电66666\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"f0147382fde84277b21bbba6182ad06b\",\n" +
+ "\t\t\t\"name\": \"86588336\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"f414a5dbd4a64107a74cca24a3582c28\",\n" +
+ "\t\t\t\"name\": \"闽C747475\"\n" +
+ "\t\t}],\n" +
+ "\t\t\"parentId\": \"c2e7783bc2754801886b97b460274c24\"\n" +
+ "\t},{\n" +
+ "\t\t\"children\": [],\n" +
+ "\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\"name\": \"测试子部门111\",\n" +
+ "\t\t\"itemList\": [{\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"2edce931c95c4dfa85f74e63ebaf62c5\",\n" +
+ "\t\t\t\"name\": \"泉州-小电65656\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"3e54fc5bd8a24a1f8589c162bc1260e6\",\n" +
+ "\t\t\t\"name\": \"2422343\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"57b07f3fc3454ec7b8aaa68d5be33712\",\n" +
+ "\t\t\t\"name\": \"泉州-小电3425456\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"5c56f6cfb62b4d9195b2af51f9685d7f\",\n" +
+ "\t\t\t\"name\": \"泉州-东海A10066\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"799f3465754247d9b962de57ebc67758\",\n" +
+ "\t\t\t\"name\": \"闽C747474\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"963aef4009754321b4f61653dbfc8e0d\",\n" +
+ "\t\t\t\"name\": \"86588335\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"afa63486c2bc42ec80963ec84923b4b0\",\n" +
+ "\t\t\t\"name\": \"泉州-小电66666\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"f0147382fde84277b21bbba6182ad06b\",\n" +
+ "\t\t\t\"name\": \"86588336\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"f414a5dbd4a64107a74cca24a3582c28\",\n" +
+ "\t\t\t\"name\": \"闽C747475\"\n" +
+ "\t\t}],\n" +
+ "\t\t\"parentId\": \"c2e7783bc2754801886b97b460274c24\"\n" +
+ "\t}],\n" +
+ "\t\"depId\": \"c2e7783bc2754801886b97b460274c24\",\n" +
+ "\t\"name\": \"c测试部门\",\n" +
+ "\t\"itemList\": [{\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"2edce931c95c4dfa85f74e63ebaf62c5\",\n" +
+ "\t\t\t\"name\": \"泉州-小电65656\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"3e54fc5bd8a24a1f8589c162bc1260e6\",\n" +
+ "\t\t\t\"name\": \"2422343\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"57b07f3fc3454ec7b8aaa68d5be33712\",\n" +
+ "\t\t\t\"name\": \"泉州-小电3425456\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"5c56f6cfb62b4d9195b2af51f9685d7f\",\n" +
+ "\t\t\t\"name\": \"泉州-东海A10066\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"799f3465754247d9b962de57ebc67758\",\n" +
+ "\t\t\t\"name\": \"闽C747474\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"963aef4009754321b4f61653dbfc8e0d\",\n" +
+ "\t\t\t\"name\": \"86588335\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"afa63486c2bc42ec80963ec84923b4b0\",\n" +
+ "\t\t\t\"name\": \"泉州-小电66666\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"f0147382fde84277b21bbba6182ad06b\",\n" +
+ "\t\t\t\"name\": \"86588336\"\n" +
+ "\t\t}, {\n" +
+ "\t\t\t\"depId\": \"19972f7083ed4c3c9c8b00c96e906b45\",\n" +
+ "\t\t\t\"ebikeId\": \"f414a5dbd4a64107a74cca24a3582c28\",\n" +
+ "\t\t\t\"name\": \"闽C747475\"\n" +
+ "\t\t}],\n" +
+ "\t\"parentId\": \"b5980cac5fc14b11113e43ebf9fe673d\"\n" +
+ "}";
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int id = item.getItemId();
- switch (id) {
- case R.id.id_action_close_all:
- adapter.collapseAll();
- break;
- default:
- break;
- }
- return super.onOptionsItemSelected(item);
+ Folder item = new Gson().fromJson(str, Folder.class);
+ ArrayList folders = new ArrayList<>();
+ folders.add(item);
+ selectTreeView.showFolders(folders);
}
}
diff --git a/app/src/main/java/tellh/com/recyclertreeview/bean/Dir.java b/app/src/main/java/tellh/com/recyclertreeview/bean/Dir.java
deleted file mode 100644
index 035bbd9..0000000
--- a/app/src/main/java/tellh/com/recyclertreeview/bean/Dir.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package tellh.com.recyclertreeview.bean;
-
-import tellh.com.recyclertreeview.R;
-import tellh.com.recyclertreeview_lib.LayoutItemType;
-
-/**
- * Created by tlh on 2016/10/1 :)
- */
-
-public class Dir implements LayoutItemType {
- public String dirName;
-
- public Dir(String dirName) {
- this.dirName = dirName;
- }
-
- @Override
- public int getLayoutId() {
- return R.layout.item_dir;
- }
-}
diff --git a/app/src/main/java/tellh/com/recyclertreeview/bean/File.java b/app/src/main/java/tellh/com/recyclertreeview/bean/File.java
index 03b5a89..17d05f1 100644
--- a/app/src/main/java/tellh/com/recyclertreeview/bean/File.java
+++ b/app/src/main/java/tellh/com/recyclertreeview/bean/File.java
@@ -3,19 +3,31 @@
import tellh.com.recyclertreeview.R;
import tellh.com.recyclertreeview_lib.LayoutItemType;
-/**
- * Created by tlh on 2016/10/1 :)
- */
-
public class File implements LayoutItemType {
- public String fileName;
+ private boolean isSelect = false;
+ private String name;//
+
+ public File() {
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setSelect(boolean select) {
+ isSelect = select;
+ }
- public File(String fileName) {
- this.fileName = fileName;
+ public boolean isSelect() {
+ return isSelect;
}
@Override
public int getLayoutId() {
- return R.layout.item_file;
+ return R.layout.item_list;
}
}
diff --git a/app/src/main/java/tellh/com/recyclertreeview/bean/Folder.java b/app/src/main/java/tellh/com/recyclertreeview/bean/Folder.java
new file mode 100644
index 0000000..8ae00f4
--- /dev/null
+++ b/app/src/main/java/tellh/com/recyclertreeview/bean/Folder.java
@@ -0,0 +1,64 @@
+package tellh.com.recyclertreeview.bean;
+
+import java.util.List;
+
+import tellh.com.recyclertreeview.R;
+import tellh.com.recyclertreeview_lib.LayoutItemType;
+
+/**
+ * 节点数
+ */
+public class Folder implements LayoutItemType {
+ private boolean isSelect = false;
+
+ /** 名称 */
+ private String name;
+
+ /** 数据列表 */
+ List itemList;//
+
+ /** 子节点 */
+ private List children; //(结果嵌套)
+
+ public Folder() {
+ }
+
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ public List getItemList() {
+ return itemList;
+ }
+
+ public void setItemList(List itemList) {
+ this.itemList = itemList;
+ }
+
+ public List getChildren() {
+ return children;
+ }
+
+ public void setChildren(List children) {
+ this.children = children;
+ }
+
+ public boolean isSelect() {
+ return isSelect;
+ }
+
+ public void setSelect(boolean select) {
+ isSelect = select;
+ }
+
+ @Override
+ public int getLayoutId() {
+ return R.layout.item_folder;
+ }
+}
diff --git a/app/src/main/java/tellh/com/recyclertreeview/util/UIUtils.java b/app/src/main/java/tellh/com/recyclertreeview/util/UIUtils.java
new file mode 100644
index 0000000..9d3ea39
--- /dev/null
+++ b/app/src/main/java/tellh/com/recyclertreeview/util/UIUtils.java
@@ -0,0 +1,29 @@
+package tellh.com.recyclertreeview.util;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+public class UIUtils {
+ private static Context context;
+ public static void init(Context context)
+ {
+ UIUtils.context = context;
+ }
+ public static int dip2px(float dip) {
+ float density = context.getResources().getDisplayMetrics().density;
+ return (int) (dip * density + 0.5f);
+ }
+
+ public static float px2dip(int px) {
+ float density = context.getResources().getDisplayMetrics().density;
+ return px / density;
+ }
+
+ // 获取图片
+ public static Drawable getDrawableWithSize(int id) {
+ Drawable dra = context.getResources().getDrawable(id);
+ dra.setBounds(0, 0, dra.getIntrinsicWidth(), dra.getIntrinsicHeight());
+ return dra;
+ }
+
+}
diff --git a/app/src/main/java/tellh/com/recyclertreeview/view/EmptyRecyclerView.java b/app/src/main/java/tellh/com/recyclertreeview/view/EmptyRecyclerView.java
new file mode 100644
index 0000000..6d60bbd
--- /dev/null
+++ b/app/src/main/java/tellh/com/recyclertreeview/view/EmptyRecyclerView.java
@@ -0,0 +1,79 @@
+package tellh.com.recyclertreeview.view;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.util.AttributeSet;
+import android.view.View;
+
+
+
+/**
+ * 带有空布局的EmptyRecyclerView
+ */
+public class EmptyRecyclerView extends RecyclerView {
+
+ private View emptyView;
+
+ final private RecyclerView.AdapterDataObserver observer = new AdapterDataObserver() {
+ @Override
+ public void onChanged() {
+ checkIfEmpty();
+ }
+
+ @Override
+ public void onItemRangeInserted(int positionStart, int itemCount) {
+ checkIfEmpty();
+ }
+
+ @Override
+ public void onItemRangeRemoved(int positionStart, int itemCount) {
+ checkIfEmpty();
+ }
+ };
+
+
+ public EmptyRecyclerView(Context context) {
+ super(context);
+ }
+
+
+ public EmptyRecyclerView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public EmptyRecyclerView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+
+ private void checkIfEmpty() {
+ if (emptyView != null && getAdapter() != null) {
+
+ Adapter adapter = getAdapter();
+ boolean emptyViewVisible = adapter.getItemCount() == 0;
+
+ emptyView.setVisibility(emptyViewVisible ? VISIBLE : GONE);
+ //setVisibility(emptyViewVisible ? GONE : VISIBLE);
+ }
+ }
+
+ @Override
+ public void setAdapter(Adapter adapter) {
+ final Adapter oldAdapter = getAdapter();
+ if (oldAdapter != null) {
+ oldAdapter.unregisterAdapterDataObserver(observer);
+ }
+ super.setAdapter(adapter);
+ if (adapter != null) {
+ adapter.registerAdapterDataObserver(observer);
+ }
+ checkIfEmpty();
+ }
+
+ public void setEmptyView(View emptyView) {
+ this.emptyView = emptyView;
+
+
+ checkIfEmpty();
+ }
+}
diff --git a/app/src/main/java/tellh/com/recyclertreeview/view/SelectTreeView.kt b/app/src/main/java/tellh/com/recyclertreeview/view/SelectTreeView.kt
new file mode 100644
index 0000000..47d411e
--- /dev/null
+++ b/app/src/main/java/tellh/com/recyclertreeview/view/SelectTreeView.kt
@@ -0,0 +1,238 @@
+package tellh.com.recyclertreeview.view
+
+import android.content.Context
+import android.support.v7.widget.LinearLayoutManager
+import android.support.v7.widget.RecyclerView
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.view.View
+import android.widget.LinearLayout
+import com.nlinks.minielectric_helper_android.module.message.FileBinder
+import com.nlinks.minielectric_helper_android.module.message.FolderBinder
+import kotlinx.android.synthetic.main.layout_empty_list.view.*
+import kotlinx.android.synthetic.main.layout_select_view.view.*
+import tellh.com.recyclertreeview.R
+import tellh.com.recyclertreeview.bean.File
+import tellh.com.recyclertreeview.bean.Folder
+import tellh.com.recyclertreeview.util.UIUtils
+import tellh.com.recyclertreeview_lib.LayoutItemType
+import tellh.com.recyclertreeview_lib.TreeNode
+import tellh.com.recyclertreeview_lib.TreeViewAdapter
+import java.util.*
+import kotlin.collections.ArrayList
+
+/**
+ * 项目名称:minielectric-helper-android
+ * 类描述:消息列表过滤视图
+ * @author hxiaohui0@linewell.com
+ * 创建时间:2019/10/25 0025 上午 9:14
+ */
+class SelectTreeView(context: Context?, attrs: AttributeSet?) : LinearLayout(context, attrs){
+
+ private var filterData: Folder? = null
+
+ private var filterView:View? = null
+
+ var filterListener: OnFilterListener? = null
+
+ init {
+
+ UIUtils.init(context?.applicationContext)
+
+ filterView = LayoutInflater.from(context).inflate(R.layout.layout_select_view, this, true)
+
+ setListeners()
+
+ var rv = rv_filter
+ rv.setEmptyView(llayout_empty_view)
+ rv.layoutManager = LinearLayoutManager(context)
+ }
+
+ private fun setListeners() {
+ }
+
+ /**
+ * 加载过滤配置数据
+ */
+ fun showFolders(data:ArrayList) {
+ filterData = Folder()
+ filterData!!.children = data
+ var firstNode = TreeNode(filterData!!)
+ changeToNodes(firstNode)
+ initFilterList(ArrayList(firstNode.childList))
+
+ }
+
+ /**
+ * 设置过滤树形控件的列表适配器
+ */
+ private fun initFilterList(filterNodes : ArrayList>) {
+ var rv = rv_filter
+ var adapter = TreeViewAdapter(filterNodes, Arrays.asList(FolderBinder(rv), FileBinder(rv)))
+ adapter.setOnTreeNodeListener(object : TreeViewAdapter.OnTreeNodeListener {
+ override fun onClick(node: TreeNode<*>, holder: RecyclerView.ViewHolder?): Boolean {
+ if (holder is FolderBinder.ViewHolder) {
+ onToggle(!node.isExpand, holder)
+ }
+ return false
+ }
+
+ override fun onToggle(isExpand: Boolean, holder: RecyclerView.ViewHolder?) {
+ if(holder is FolderBinder.ViewHolder)
+ {
+ val ivArrow = holder.iv_arrow
+ val rotateDegree = if (isExpand) 90 else -90
+ ivArrow!!.animate().rotationBy(rotateDegree.toFloat())
+ .start()
+ }
+ }
+ })
+ adapter.setPadding(UIUtils.dip2px(20F))
+ rv.adapter = adapter
+ }
+
+ /**
+ * 将数据转化为树形控件需要的数据类型
+ */
+ private fun changeToNodes(data: TreeNode?) {
+ if(data != null)
+ {
+
+ var bikeList = data.content.itemList
+ if(bikeList != null && bikeList.isNotEmpty())
+ {
+ for(b in bikeList)
+ {
+ var nodeChild = TreeNode(b)
+ data.addChild(nodeChild)
+ }
+ }
+
+ var children = data.content.children
+ if(children != null && children.size > 0)
+ {
+ for(c in children)
+ {
+ var nodeChild = TreeNode(c)
+ data.addChild(nodeChild)
+ changeToNodes(nodeChild)
+ }
+ }
+
+ }
+ }
+
+
+ /**
+ * 获取过滤的车辆id列表
+ */
+ public fun getSelectCars(): ArrayList {
+ var list = arrayListOf()
+ if(filterData != null)
+ {
+ addItemCars(filterData, list)
+ }
+ return list
+ }
+
+ /**
+ * 重置过滤消息设置
+ */
+ private fun resetSelect() {
+ if(filterData == null)
+ {
+ return
+ }
+ resetItemCarSelect(Folder().apply { children = arrayListOf(filterData) })
+
+ rv_filter.adapter?.notifyDataSetChanged()
+ }
+
+ /**
+ * 递归方法:添加已选择的车辆id到到list中
+ */
+ private fun addItemCars(d: Folder?, list:ArrayList)
+ {
+ var bikes = d?.itemList
+ if(bikes != null)
+ {
+ var subList = bikes.filter { it.isSelect }
+ subList?.forEach { list.add(it) }
+ }
+
+ if(d?.children != null)
+ {
+ for(c in d.children)
+ {
+ addItemCars(c, list)
+ }
+ }
+
+ }
+
+ /**
+ * 重置车辆选择状态为未选择
+ */
+ private fun resetItemCarSelect(d: Folder?)
+ {
+ d?.isSelect = false
+
+ d?.children?.forEach{
+ it.isSelect = false
+ resetItemCarSelect(it)
+ }
+
+ d?.itemList?.forEach {
+ it.isSelect = false
+ }
+ }
+
+ public interface OnFilterListener
+ {
+ public fun onSure()
+ public fun onClose()
+ }
+
+ companion object{
+ /**
+ * 判断父节点是否全选
+ */
+ fun adjustParentIsCheckAll(node: TreeNode<*>)
+ {
+ var parent = node.parent
+ if(parent != null)
+ {
+ var content = parent?.content as? Folder
+ var child = content?.children
+ var bikes = content?.itemList
+ var res = true
+ if(child != null)
+ {
+ for(c in child)
+ {
+ res = res && c.isSelect
+ if(!res)
+ {
+ break
+ }
+ }
+ }
+
+ if(res) {
+ if (bikes != null) {
+ for (b in bikes) {
+ res = res && b.isSelect
+ if (!res) {
+ break
+ }
+ }
+ }
+ }
+
+ content?.isSelect = res
+ adjustParentIsCheckAll(parent)
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/tellh/com/recyclertreeview/viewbinder/DirectoryNodeBinder.java b/app/src/main/java/tellh/com/recyclertreeview/viewbinder/DirectoryNodeBinder.java
deleted file mode 100644
index 4708b31..0000000
--- a/app/src/main/java/tellh/com/recyclertreeview/viewbinder/DirectoryNodeBinder.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package tellh.com.recyclertreeview.viewbinder;
-
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import tellh.com.recyclertreeview.R;
-import tellh.com.recyclertreeview.bean.Dir;
-import tellh.com.recyclertreeview_lib.TreeNode;
-import tellh.com.recyclertreeview_lib.TreeViewBinder;
-
-/**
- * Created by tlh on 2016/10/1 :)
- */
-
-public class DirectoryNodeBinder extends TreeViewBinder {
- @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;
- }
- }
-}
diff --git a/app/src/main/java/tellh/com/recyclertreeview/viewbinder/FileBinder.kt b/app/src/main/java/tellh/com/recyclertreeview/viewbinder/FileBinder.kt
new file mode 100644
index 0000000..89139d0
--- /dev/null
+++ b/app/src/main/java/tellh/com/recyclertreeview/viewbinder/FileBinder.kt
@@ -0,0 +1,61 @@
+package com.nlinks.minielectric_helper_android.module.message
+
+import android.support.v7.widget.RecyclerView
+import android.view.View
+import android.widget.ImageView
+import android.widget.TextView
+import tellh.com.recyclertreeview.view.SelectTreeView
+import tellh.com.recyclertreeview.R
+import tellh.com.recyclertreeview.bean.File
+import tellh.com.recyclertreeview_lib.TreeNode
+import tellh.com.recyclertreeview_lib.TreeViewBinder
+
+/**
+ * 项目名称:minielectric-helper-android
+ * 类描述:
+ * @author hxiaohui0@linewell.com
+ * 创建时间:2019/10/22 0022 下午 4:54
+ */
+class FileBinder(var rv: RecyclerView): TreeViewBinder()
+{
+ override fun bindView(holder: ViewHolder, position: Int, node: TreeNode<*>) {
+ var data = (node.content as? File)
+ if(data?.isSelect == true)
+ {
+ holder.iv_select.setImageResource(R.drawable.icon_xuanze)
+ }else
+ {
+ holder.iv_select.setImageResource(R.drawable.icon_weixuan)
+ }
+
+ holder.itemView.setOnClickListener(object:View.OnClickListener{
+ override fun onClick(p0: View?) {
+ data?.isSelect = !data?.isSelect!!
+ SelectTreeView.adjustParentIsCheckAll(node)
+ rv.adapter?.notifyDataSetChanged()
+ }
+
+ })
+ holder.tv_item.text = data?.name
+ }
+
+
+
+ override fun getLayoutId(): Int {
+ return R.layout.item_list
+ }
+
+ override fun provideViewHolder(itemView: View?): ViewHolder {
+ return ViewHolder(itemView!!)
+ }
+
+ class ViewHolder(view: View): RecyclerView.ViewHolder(view)
+ {
+ lateinit var tv_item:TextView
+ lateinit var iv_select:ImageView
+ init {
+ tv_item = view.findViewById(R.id.tv_item)
+ iv_select = view.findViewById(R.id.iv_select)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/tellh/com/recyclertreeview/viewbinder/FileNodeBinder.java b/app/src/main/java/tellh/com/recyclertreeview/viewbinder/FileNodeBinder.java
deleted file mode 100644
index ebb2dd6..0000000
--- a/app/src/main/java/tellh/com/recyclertreeview/viewbinder/FileNodeBinder.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package tellh.com.recyclertreeview.viewbinder;
-
-import android.view.View;
-import android.widget.TextView;
-
-import tellh.com.recyclertreeview.R;
-import tellh.com.recyclertreeview.bean.File;
-import tellh.com.recyclertreeview_lib.TreeNode;
-import tellh.com.recyclertreeview_lib.TreeViewBinder;
-
-/**
- * Created by tlh on 2016/10/1 :)
- */
-
-public class FileNodeBinder extends TreeViewBinder {
- @Override
- public ViewHolder provideViewHolder(View itemView) {
- return new ViewHolder(itemView);
- }
-
- @Override
- public void bindView(ViewHolder holder, int position, TreeNode node) {
- File fileNode = (File) node.getContent();
- holder.tvName.setText(fileNode.fileName);
- }
-
- @Override
- public int getLayoutId() {
- return R.layout.item_file;
- }
-
- public class ViewHolder extends TreeViewBinder.ViewHolder {
- public TextView tvName;
-
- public ViewHolder(View rootView) {
- super(rootView);
- this.tvName = (TextView) rootView.findViewById(R.id.tv_name);
- }
-
- }
-}
diff --git a/app/src/main/java/tellh/com/recyclertreeview/viewbinder/FolderBinder.kt b/app/src/main/java/tellh/com/recyclertreeview/viewbinder/FolderBinder.kt
new file mode 100644
index 0000000..20093f3
--- /dev/null
+++ b/app/src/main/java/tellh/com/recyclertreeview/viewbinder/FolderBinder.kt
@@ -0,0 +1,89 @@
+package com.nlinks.minielectric_helper_android.module.message
+
+import android.support.v7.widget.RecyclerView
+import android.view.View
+import android.widget.ImageView
+import android.widget.TextView
+import tellh.com.recyclertreeview.view.SelectTreeView
+import tellh.com.recyclertreeview.R
+import tellh.com.recyclertreeview.bean.Folder
+import tellh.com.recyclertreeview.util.UIUtils
+import tellh.com.recyclertreeview_lib.TreeNode
+import tellh.com.recyclertreeview_lib.TreeViewBinder
+
+
+class FolderBinder(var rv: RecyclerView): TreeViewBinder()
+{
+ override fun bindView(holder: ViewHolder, position: Int, node: TreeNode<*>) {
+ var data = node.content as? Folder
+ if(data?.isSelect == true)
+ {
+ var dra = UIUtils.getDrawableWithSize(R.drawable.icon_xuanze)
+ holder.tv_select.setCompoundDrawables(null, null, dra, null)
+ }else
+ {
+ var dra = UIUtils.getDrawableWithSize(R.drawable.icon_weixuan)
+ holder.tv_select.setCompoundDrawables(null, null, dra, null)
+ }
+ holder.tv_carshop_name.text = data?.name
+ holder.iv_arrow.rotation = 0f
+ val rotateDegree = if (node.isExpand) 90f else 0f
+ holder.iv_arrow.rotation = rotateDegree
+
+ holder.tv_select.setOnClickListener(object:View.OnClickListener{
+ override fun onClick(p0: View?) {
+ data?.isSelect = !data?.isSelect!!
+ reverseAllChildSelect(data, data?.isSelect)
+ SelectTreeView.adjustParentIsCheckAll(node)
+ var iii = 0
+ rv?.adapter?.notifyDataSetChanged()
+ }
+
+ })
+
+ }
+
+ private fun reverseAllChildSelect(data: Folder, select:Boolean) {
+ data?.isSelect = select
+ var child = data?.children
+ var bikeList = data?.itemList
+ if(child != null )
+ {
+ for(c in child)
+ {
+ reverseAllChildSelect(c, select)
+ c.isSelect = select
+ }
+ }
+
+ if(bikeList != null)
+ {
+ for(b in bikeList)
+ {
+ b.isSelect = select
+ }
+ }
+
+
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.item_folder
+ }
+
+ override fun provideViewHolder(itemView: View?): ViewHolder {
+ return ViewHolder(itemView!!)
+ }
+
+ class ViewHolder(view: View):RecyclerView.ViewHolder(view)
+ {
+ lateinit var iv_arrow:ImageView
+ lateinit var tv_carshop_name:TextView
+ lateinit var tv_select:TextView
+ init {
+ iv_arrow = view?.findViewById(R.id.iv_arrow)
+ tv_carshop_name = view?.findViewById(R.id.tv_carshop_name)
+ tv_select = view?.findViewById(R.id.tv_select)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-hdpi/ic_folder_light_blue_700_24dp.png b/app/src/main/res/drawable-hdpi/ic_folder_light_blue_700_24dp.png
deleted file mode 100644
index 0aa6c25..0000000
Binary files a/app/src/main/res/drawable-hdpi/ic_folder_light_blue_700_24dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_insert_drive_file_light_blue_700_24dp.png b/app/src/main/res/drawable-hdpi/ic_insert_drive_file_light_blue_700_24dp.png
deleted file mode 100644
index 4d5a18c..0000000
Binary files a/app/src/main/res/drawable-hdpi/ic_insert_drive_file_light_blue_700_24dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_right_black_18dp.png b/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_right_black_18dp.png
deleted file mode 100644
index 10800e0..0000000
Binary files a/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_right_black_18dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_folder_light_blue_700_24dp.png b/app/src/main/res/drawable-mdpi/ic_folder_light_blue_700_24dp.png
deleted file mode 100644
index 58f99ee..0000000
Binary files a/app/src/main/res/drawable-mdpi/ic_folder_light_blue_700_24dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_insert_drive_file_light_blue_700_24dp.png b/app/src/main/res/drawable-mdpi/ic_insert_drive_file_light_blue_700_24dp.png
deleted file mode 100644
index 210b5c5..0000000
Binary files a/app/src/main/res/drawable-mdpi/ic_insert_drive_file_light_blue_700_24dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_keyboard_arrow_right_black_18dp.png b/app/src/main/res/drawable-mdpi/ic_keyboard_arrow_right_black_18dp.png
deleted file mode 100644
index 8d9ab0e..0000000
Binary files a/app/src/main/res/drawable-mdpi/ic_keyboard_arrow_right_black_18dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/empty_normal.png b/app/src/main/res/drawable-xhdpi/empty_normal.png
new file mode 100644
index 0000000..5603f0a
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/empty_normal.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_folder_light_blue_700_24dp.png b/app/src/main/res/drawable-xhdpi/ic_folder_light_blue_700_24dp.png
deleted file mode 100644
index 441d303..0000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_folder_light_blue_700_24dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_insert_drive_file_light_blue_700_24dp.png b/app/src/main/res/drawable-xhdpi/ic_insert_drive_file_light_blue_700_24dp.png
deleted file mode 100644
index f629afe..0000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_insert_drive_file_light_blue_700_24dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_right_black_18dp.png b/app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_right_black_18dp.png
deleted file mode 100644
index 1966d47..0000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_right_black_18dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_node_no_expand.png b/app/src/main/res/drawable-xhdpi/icon_node_no_expand.png
new file mode 100644
index 0000000..c6b9070
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_node_no_expand.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_weixuan.png b/app/src/main/res/drawable-xhdpi/icon_weixuan.png
new file mode 100644
index 0000000..713f312
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_weixuan.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_xuanze.png b/app/src/main/res/drawable-xhdpi/icon_xuanze.png
new file mode 100644
index 0000000..35983df
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_xuanze.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_folder_light_blue_700_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_folder_light_blue_700_24dp.png
deleted file mode 100644
index aec90f0..0000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_folder_light_blue_700_24dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_insert_drive_file_light_blue_700_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_insert_drive_file_light_blue_700_24dp.png
deleted file mode 100644
index 8b601fd..0000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_insert_drive_file_light_blue_700_24dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_right_black_18dp.png b/app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_right_black_18dp.png
deleted file mode 100644
index 414f2f9..0000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_right_black_18dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_menu_delete.png b/app/src/main/res/drawable-xxhdpi/ic_menu_delete.png
deleted file mode 100644
index 8e9e78d..0000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_menu_delete.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_folder_light_blue_700_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_folder_light_blue_700_24dp.png
deleted file mode 100644
index c79360b..0000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_folder_light_blue_700_24dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_insert_drive_file_light_blue_700_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_insert_drive_file_light_blue_700_24dp.png
deleted file mode 100644
index cac36dd..0000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_insert_drive_file_light_blue_700_24dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_keyboard_arrow_right_black_18dp.png b/app/src/main/res/drawable-xxxhdpi/ic_keyboard_arrow_right_black_18dp.png
deleted file mode 100644
index 01191c7..0000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_keyboard_arrow_right_black_18dp.png and /dev/null differ
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 869486d..7146b96 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,8 +1,15 @@
-
+ android:orientation="vertical"
+ >
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_dir.xml b/app/src/main/res/layout/item_dir.xml
deleted file mode 100644
index 0f2c4e8..0000000
--- a/app/src/main/res/layout/item_dir.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_file.xml b/app/src/main/res/layout/item_file.xml
deleted file mode 100644
index f0e0995..0000000
--- a/app/src/main/res/layout/item_file.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_folder.xml b/app/src/main/res/layout/item_folder.xml
new file mode 100644
index 0000000..44b90bc
--- /dev/null
+++ b/app/src/main/res/layout/item_folder.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_list.xml b/app/src/main/res/layout/item_list.xml
new file mode 100644
index 0000000..aa55fd0
--- /dev/null
+++ b/app/src/main/res/layout/item_list.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_empty_list.xml b/app/src/main/res/layout/layout_empty_list.xml
new file mode 100644
index 0000000..059ae96
--- /dev/null
+++ b/app/src/main/res/layout/layout_empty_list.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_select_view.xml b/app/src/main/res/layout/layout_select_view.xml
new file mode 100644
index 0000000..466dede
--- /dev/null
+++ b/app/src/main/res/layout/layout_select_view.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
deleted file mode 100644
index e888dcd..0000000
--- a/app/src/main/res/menu/menu_main.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml
deleted file mode 100644
index 63fc816..0000000
--- a/app/src/main/res/values-w820dp/dimens.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- 64dp
-
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 3ab3e9c..91a05da 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,4 +3,8 @@
#3F51B5
#303F9F
#FF4081
+
+ #35476b
+ #FF50B1E4
+ #FFFFFFFF
diff --git a/build.gradle b/build.gradle
index 987db10..14de3ee 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,13 +1,16 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
+ ext.kotlin_version = '1.3.41'
repositories {
jcenter()
+ google()
}
dependencies {
//JitPack
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
- classpath 'com.android.tools.build:gradle:3.0.1'
+ classpath 'com.android.tools.build:gradle:3.5.1'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index fc9b829..e0a5bff 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Mon Dec 28 10:00:20 PST 2015
+#Wed Nov 13 10:00:44 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
diff --git a/recyclertreeview-lib/src/main/java/tellh/com/recyclertreeview_lib/TreeNode.java b/recyclertreeview-lib/src/main/java/tellh/com/recyclertreeview_lib/TreeNode.java
index 02f6741..87b7966 100644
--- a/recyclertreeview-lib/src/main/java/tellh/com/recyclertreeview_lib/TreeNode.java
+++ b/recyclertreeview-lib/src/main/java/tellh/com/recyclertreeview_lib/TreeNode.java
@@ -27,7 +27,7 @@ public TreeNode(@NonNull T content) {
public int getHeight() {
if (isRoot())
- height = 0;
+ height = -1;
else if (height == UNDEFINE)
height = parent.getHeight() + 1;
return height;