-
-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use this library #2
Comments
Hello @polo2169, First welcome to java and TreeView😄
The tree is represented as roots and subnodes for example
Directory 1 node is a parent and has 2 children (file 1, directory 2) and directory 2 is also a parent of one child who is file 2, so to create this in java after creating 4 nodes you need to set the relation between them, so add file 2 node as a child in directory 2, and then add file 1 and directory 2 as children in directory 2 TreeNode directory1 = new TreeNode("Directory 1", R.layout.directory);
TreeNode directory2 = new TreeNode("Directory 2", R.layout.directory);
TreeNode file1 = new TreeNode("File 1", R.layout.file);
TreeNode file2 = new TreeNode("File 2", R.layout.file);
directory2.addChild(file2);
directory1.addChild(file1);
directory1.addChild(directory2); This is how to use TreeView basically, if you have any problem with any example we can discuss it. Thanks |
Hi @AmrDeveloper, |
It weird @polo2169, Make sure you used this import
Can you please write the error message in this line
|
you are right I had the wrong import :/ package fr.pdego.treeview2;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import com.amrdeveloper.treeview.TreeNode;
import com.amrdeveloper.treeview.TreeViewAdapter;
import com.amrdeveloper.treeview.TreeViewHolderFactory;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.recycler_view);
TreeViewHolderFactory factory = (v, layout) -> {
if (layout == R.layout.directory) return new CustomViewHolderOne(v);
else if (layout == R.layout.file) return new CustomViewHolderTwo(v);
else return new CustomViewHolderThree(v);
};
TreeViewAdapter treeViewAdapter = new TreeViewAdapter(factory);
recyclerView.setAdapter(treeViewAdapter);
TreeNode root1 = new TreeNode("Root1", R.layout.directory);
root1.addChild(new TreeNode("Child1", R.layout.file));
root1.addChild(new TreeNode("Child2", R.layout.file));
List<TreeNode> roots = new ArrayList<>();
roots.add(root1);
treeViewAdapter.updateTreeNodes(roots);
}
} My view Holder package fr.pdego.treeview2;
import android.view.View;
import androidx.annotation.NonNull;
import com.amrdeveloper.treeview.TreeNode;
import com.amrdeveloper.treeview.TreeViewHolder;
public class CustomViewHolderOne extends TreeViewHolder {
public CustomViewHolderOne(@NonNull View itemView) {
super(itemView);
}
@Override
public void bindTreeNode(TreeNode node) {
super.bindTreeNode(node);
// Here you can bind your node and check if it selected or not
}
} My layouts <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_folder" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/image"
android:text="List Item"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
android:textStyle="bold" />
</RelativeLayout> Thank you for all your help! |
First of all roots should add to the roots list so if you want to show Directories 1 and 2 add them to the list roots.add(directory1);
roots.add(directory2); Then in your view holder, you should update the text view to show the value for example, think of it as an adapter package fr.pdego.treeview2;
import android.view.View;
import androidx.annotation.NonNull;
import com.amrdeveloper.treeview.TreeNode;
import com.amrdeveloper.treeview.TreeViewHolder;
public class CustomViewHolderOne extends TreeViewHolder {
private TextView text;
public CustomViewHolderOne(@NonNull View itemView) {
super(itemView);
text = itemView.findViewById(R.id.text);
}
@Override
public void bindTreeNode(TreeNode node) {
super.bindTreeNode(node);
text.setText(node.getValue().toString());
}
} After your first example work well, I suggest to run the example app and play with it to see the features, and if you have any question please feel free to ask |
I did it! Thank you so much for your help and for this really nice project! |
@polo2169 You're most welcome :D, enjoy using it |
Hi,
I'm a beginner in java and I would like to use this library but I don't understand how to use it. The example is half explained, for example I don't understand what are the parent and child layouts.
If you have just a working example it would help me a lot!
Thanks
The text was updated successfully, but these errors were encountered: