X Tutup
Skip to content

Commit 43adc32

Browse files
Bogdan MelnychukBogdan Melnychuk
authored andcommitted
Save state added to sample app
1 parent 8b376f2 commit 43adc32

File tree

9 files changed

+50
-29
lines changed

9 files changed

+50
-29
lines changed

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

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import android.app.Fragment;
44
import android.os.Bundle;
5+
import android.text.TextUtils;
56
import android.view.LayoutInflater;
67
import android.view.View;
78
import android.view.ViewGroup;
8-
import android.widget.TextView;
99

1010
import com.unnamed.b.atv.model.TreeNode;
1111
import com.unnamed.b.atv.sample.R;
@@ -20,14 +20,13 @@
2020
* Created by Bogdan Melnychuk on 2/12/15.
2121
*/
2222
public class CustomViewHolderFragment extends Fragment {
23-
private TextView statusBar;
23+
private AndroidTreeView tView;
2424

2525
@Override
2626
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
2727
final View rootView = inflater.inflate(R.layout.fragment_default, null, false);
2828
final ViewGroup containerView = (ViewGroup) rootView.findViewById(R.id.container);
29-
statusBar = (TextView) rootView.findViewById(R.id.status_bar);
30-
statusBar.setVisibility(View.GONE);
29+
rootView.findViewById(R.id.status_bar).setVisibility(View.GONE);
3130

3231
final TreeNode root = TreeNode.root();
3332

@@ -41,10 +40,17 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
4140
addProfileData(barry);
4241
root.addChildren(myProfile, bruce, barry, clark);
4342

44-
AndroidTreeView tView = new AndroidTreeView(getActivity(), root);
43+
tView = new AndroidTreeView(getActivity(), root);
4544
tView.setDefaultContainerStyle(R.style.TreeNodeStyleDivided, true);
4645
containerView.addView(tView.getView());
4746

47+
if (savedInstanceState != null) {
48+
String state = savedInstanceState.getString("tState");
49+
if (!TextUtils.isEmpty(state)) {
50+
tView.restoreState(state);
51+
}
52+
}
53+
4854
return rootView;
4955
}
5056

@@ -65,5 +71,9 @@ private void addProfileData(TreeNode profile) {
6571
profile.addChildren(socialNetworks, places);
6672
}
6773

68-
74+
@Override
75+
public void onSaveInstanceState(Bundle outState) {
76+
super.onSaveInstanceState(outState);
77+
outState.putString("tState", tView.getSaveState());
78+
}
6979
}

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.app.Fragment;
44
import android.os.Bundle;
5+
import android.text.TextUtils;
56
import android.view.LayoutInflater;
67
import android.view.View;
78
import android.view.ViewGroup;
@@ -18,9 +19,11 @@
1819
*/
1920
public class FolderStructureFragment extends Fragment {
2021
private TextView statusBar;
22+
private AndroidTreeView tView;
2123

2224
@Override
2325
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
26+
2427
View rootView = inflater.inflate(R.layout.fragment_default, null, false);
2528
ViewGroup containerView = (ViewGroup) rootView.findViewById(R.id.container);
2629

@@ -49,18 +52,25 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
4952

5053
root.addChildren(computerRoot);
5154

52-
AndroidTreeView tView = new AndroidTreeView(getActivity(), root);
55+
tView = new AndroidTreeView(getActivity(), root);
5356
tView.setDefaultContainerStyle(R.style.TreeNodeStyleCustom);
5457
tView.setDefaultViewHolder(IconTreeItemHolder.class);
5558
tView.setDefaultNodeClickListener(nodeClickListener);
5659

5760
containerView.addView(tView.getView());
5861
tView.expandNode(computerRoot);
5962

63+
if (savedInstanceState != null) {
64+
String state = savedInstanceState.getString("tState");
65+
if (!TextUtils.isEmpty(state)) {
66+
tView.restoreState(state);
67+
}
68+
}
69+
6070
return rootView;
6171
}
6272

63-
private static int counter = 0;
73+
private int counter = 0;
6474

6575
private void fillDownloadsFolder(TreeNode node) {
6676
TreeNode downloads = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_folder, "Downloads" + (counter++)));
@@ -80,4 +90,10 @@ public void onClick(TreeNode node, Object value) {
8090
}
8191
}
8292
};
93+
94+
@Override
95+
public void onSaveInstanceState(Bundle outState) {
96+
super.onSaveInstanceState(outState);
97+
outState.putString("tState", tView.getSaveState());
98+
}
8399
}

app/src/main/java/com/unnamed/b/atv/sample/holder/HeaderHolder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
/**
1313
* Created by Bogdan Melnychuk on 2/13/15.
1414
*/
15-
public class HeaderHolder extends TreeNode.BaseNodeViewHolder {
15+
public class HeaderHolder extends TreeNode.BaseNodeViewHolder<IconTreeItemHolder.IconTreeItem> {
1616

1717
private PrintView arrowView;
1818

@@ -21,8 +21,7 @@ public HeaderHolder(Context context) {
2121
}
2222

2323
@Override
24-
public View createNodeView(TreeNode node) {
25-
final IconTreeItemHolder.IconTreeItem value = (IconTreeItemHolder.IconTreeItem) node.getValue();
24+
public View createNodeView(TreeNode node, IconTreeItemHolder.IconTreeItem value) {
2625
final LayoutInflater inflater = LayoutInflater.from(context);
2726
final View view = inflater.inflate(R.layout.layout_header_node, null, false);
2827
TextView tvValue = (TextView) view.findViewById(R.id.node_value);

app/src/main/java/com/unnamed/b/atv/sample/holder/IconTreeItemHolder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
/**
1313
* Created by Bogdan Melnychuk on 2/12/15.
1414
*/
15-
public class IconTreeItemHolder extends TreeNode.BaseNodeViewHolder {
15+
public class IconTreeItemHolder extends TreeNode.BaseNodeViewHolder<IconTreeItemHolder.IconTreeItem> {
1616
private TextView tvValue;
1717
private PrintView arrowView;
1818

@@ -21,8 +21,7 @@ public IconTreeItemHolder(Context context) {
2121
}
2222

2323
@Override
24-
public View createNodeView(TreeNode node) {
25-
final IconTreeItem value = (IconTreeItem) node.getValue();
24+
public View createNodeView(TreeNode node, IconTreeItem value) {
2625
final LayoutInflater inflater = LayoutInflater.from(context);
2726
final View view = inflater.inflate(R.layout.layout_icon_node, null, false);
2827
tvValue = (TextView) view.findViewById(R.id.node_value);

app/src/main/java/com/unnamed/b/atv/sample/holder/PlaceHolderHolder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,15 @@
1414
/**
1515
* Created by Bogdan Melnychuk on 2/13/15.
1616
*/
17-
public class PlaceHolderHolder extends TreeNode.BaseNodeViewHolder {
17+
public class PlaceHolderHolder extends TreeNode.BaseNodeViewHolder<PlaceHolderHolder.PlaceItem> {
1818

1919

2020
public PlaceHolderHolder(Context context) {
2121
super(context);
2222
}
2323

2424
@Override
25-
public View createNodeView(TreeNode node) {
26-
final PlaceItem value = (PlaceItem) node.getValue();
25+
public View createNodeView(TreeNode node, PlaceItem value) {
2726
final LayoutInflater inflater = LayoutInflater.from(context);
2827
final View view = inflater.inflate(R.layout.layout_place_node, null, false);
2928

app/src/main/java/com/unnamed/b/atv/sample/holder/ProfileHolder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,15 @@
1212
/**
1313
* Created by Bogdan Melnychuk on 2/13/15.
1414
*/
15-
public class ProfileHolder extends TreeNode.BaseNodeViewHolder {
15+
public class ProfileHolder extends TreeNode.BaseNodeViewHolder<IconTreeItemHolder.IconTreeItem> {
1616

1717

1818
public ProfileHolder(Context context) {
1919
super(context);
2020
}
2121

2222
@Override
23-
public View createNodeView(TreeNode node) {
24-
final IconTreeItemHolder.IconTreeItem value = (IconTreeItemHolder.IconTreeItem) node.getValue();
23+
public View createNodeView(TreeNode node, IconTreeItemHolder.IconTreeItem value) {
2524
final LayoutInflater inflater = LayoutInflater.from(context);
2625
final View view = inflater.inflate(R.layout.layout_profile_node, null, false);
2726
TextView tvValue = (TextView) view.findViewById(R.id.node_value);

app/src/main/java/com/unnamed/b/atv/sample/holder/SocialViewHolder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
/**
1515
* Created by Bogdan Melnychuk on 2/13/15.
1616
*/
17-
public class SocialViewHolder extends TreeNode.BaseNodeViewHolder {
17+
public class SocialViewHolder extends TreeNode.BaseNodeViewHolder<SocialViewHolder.SocialItem> {
1818

1919
private static final String[] NAMES = new String[]{"Bruce Wayne", "Clark Kent", "Barry Allen", "Hal Jordan"};
2020

@@ -23,8 +23,7 @@ public SocialViewHolder(Context context) {
2323
}
2424

2525
@Override
26-
public View createNodeView(TreeNode node) {
27-
final SocialItem value = (SocialItem) node.getValue();
26+
public View createNodeView(TreeNode node, SocialItem value) {
2827
final LayoutInflater inflater = LayoutInflater.from(context);
2928
final View view = inflater.inflate(R.layout.layout_social_node, null, false);
3029

library/src/main/java/com/unnamed/b/atv/holder/SimpleViewHolder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
/**
1010
* Created by Bogdan Melnychuk on 2/11/15.
1111
*/
12-
public class SimpleViewHolder extends TreeNode.BaseNodeViewHolder {
12+
public class SimpleViewHolder extends TreeNode.BaseNodeViewHolder<Object> {
1313

1414
public SimpleViewHolder(Context context) {
1515
super(context);
1616
}
1717

1818
@Override
19-
public View createNodeView(TreeNode node) {
19+
public View createNodeView(TreeNode node, Object value) {
2020
final TextView tv = new TextView(context);
21-
tv.setText(String.valueOf(node.getValue()));
21+
tv.setText(String.valueOf(value));
2222
return tv;
2323
}
2424

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ public interface TreeNodeClickListener {
167167
void onClick(TreeNode node, Object value);
168168
}
169169

170-
public static abstract class BaseNodeViewHolder {
170+
public static abstract class BaseNodeViewHolder<E> {
171171
private TreeNode mNode;
172172
private View mView;
173173
protected int containerStyle;
@@ -194,7 +194,7 @@ public void setContainerStyle(int style) {
194194
}
195195

196196
public View getNodeView() {
197-
return createNodeView(mNode);
197+
return createNodeView(mNode, (E) mNode.getValue());
198198
}
199199

200200
public ViewGroup getNodeItemsView() {
@@ -206,7 +206,7 @@ public int getContainerStyle() {
206206
}
207207

208208

209-
public abstract View createNodeView(TreeNode node);
209+
public abstract View createNodeView(TreeNode node, E value);
210210

211211
public abstract void toggle(boolean active);
212212
}

0 commit comments

Comments
 (0)
X Tutup