Skip to content

Commit 1d90738

Browse files
committed
Merge pull request bmelnychuk#32 from MathiasBerwig/long-click-listener
Added TreeNodeLongClickListener
2 parents a9a83a1 + 5fbcb2c commit 1d90738

File tree

3 files changed

+43
-4
lines changed

3 files changed

+43
-4
lines changed

app/src/main/java/com/unnamed/b/atv/sample/fragment/FolderStructureFragment.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
6767
tView.setDefaultContainerStyle(R.style.TreeNodeStyleCustom);
6868
tView.setDefaultViewHolder(IconTreeItemHolder.class);
6969
tView.setDefaultNodeClickListener(nodeClickListener);
70+
tView.setDefaultNodeLongClickListener(nodeLongClickListener);
7071

7172
containerView.addView(tView.getView());
7273

@@ -119,6 +120,14 @@ public void onClick(TreeNode node, Object value) {
119120
}
120121
};
121122

123+
private TreeNode.TreeNodeLongClickListener nodeLongClickListener = new TreeNode.TreeNodeLongClickListener() {
124+
@Override
125+
public void onLongClick(TreeNode node, Object value) {
126+
IconTreeItemHolder.IconTreeItem item = (IconTreeItemHolder.IconTreeItem) value;
127+
Toast.makeText(getActivity(), "Long click: " + item.text, Toast.LENGTH_SHORT).show();
128+
}
129+
};
130+
122131
@Override
123132
public void onSaveInstanceState(Bundle outState) {
124133
super.onSaveInstanceState(outState);

library/src/main/java/com/unnamed/b/atv/model/TreeNode.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public class TreeNode {
2525
private boolean mSelectable = true;
2626
private final List<TreeNode> children;
2727
private BaseNodeViewHolder mViewHolder;
28-
private TreeNodeClickListener mListener;
28+
private TreeNodeClickListener mClickListener;
29+
private TreeNodeLongClickListener mLongClickListener;
2930
private Object mValue;
3031
private boolean mExpanded;
3132

@@ -169,13 +170,21 @@ public TreeNode setViewHolder(BaseNodeViewHolder viewHolder) {
169170
}
170171

171172
public TreeNode setClickListener(TreeNodeClickListener listener) {
172-
mListener = listener;
173+
mClickListener = listener;
173174
return this;
174175
}
175176

176-
177177
public TreeNodeClickListener getClickListener() {
178-
return this.mListener;
178+
return this.mClickListener;
179+
}
180+
181+
public TreeNode setLongClickListener(TreeNodeLongClickListener listener) {
182+
mLongClickListener = listener;
183+
return this;
184+
}
185+
186+
public TreeNodeLongClickListener getLongClickListener() {
187+
return mLongClickListener;
179188
}
180189

181190
public BaseNodeViewHolder getViewHolder() {
@@ -206,6 +215,10 @@ public interface TreeNodeClickListener {
206215
void onClick(TreeNode node, Object value);
207216
}
208217

218+
public interface TreeNodeLongClickListener {
219+
boolean onLongClick(TreeNode node, Object value);
220+
}
221+
209222
public static abstract class BaseNodeViewHolder<E> {
210223
protected AndroidTreeView tView;
211224
protected TreeNode mNode;

library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class AndroidTreeView {
3232
private int containerStyle = 0;
3333
private Class<? extends TreeNode.BaseNodeViewHolder> defaultViewHolderClass = SimpleViewHolder.class;
3434
private TreeNode.TreeNodeClickListener nodeClickListener;
35+
private TreeNode.TreeNodeLongClickListener nodeLongClickListener;
3536
private boolean mSelectionModeEnabled;
3637
private boolean mUseDefaultAnimation = false;
3738
private boolean use2dScroll = false;
@@ -70,6 +71,10 @@ public void setDefaultNodeClickListener(TreeNode.TreeNodeClickListener listener)
7071
nodeClickListener = listener;
7172
}
7273

74+
public void setDefaultNodeLongClickListener(TreeNode.TreeNodeLongClickListener listener) {
75+
nodeLongClickListener = listener;
76+
}
77+
7378
public void expandAll() {
7479
expandNode(mRoot, true);
7580
}
@@ -250,6 +255,18 @@ public void onClick(View v) {
250255
toggleNode(n);
251256
}
252257
});
258+
259+
nodeView.setOnLongClickListener(new View.OnLongClickListener() {
260+
@Override
261+
public boolean onLongClick(View view) {
262+
if (n.getLongClickListener() != null) {
263+
return n.getLongClickListener().onLongClick(n, n.getValue());
264+
} else if (nodeLongClickListener != null) {
265+
return nodeLongClickListener.onLongClick(n, n.getValue());
266+
}
267+
return false;
268+
}
269+
});
253270
}
254271

255272

0 commit comments

Comments
 (0)