Skip to content

Commit 9d107e8

Browse files
kurtisnelsonBrandyn A. White
authored andcommitted
Main menu adapts to device
* CardScrollView on Glass * ListView elsewhere
1 parent 2b44ba8 commit 9d107e8

File tree

5 files changed

+139
-21
lines changed

5 files changed

+139
-21
lines changed

android/WearScript/src/main/java/com/dappervision/wearscript/WearScriptInfo.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,4 +143,8 @@ public Intent getIntent() {
143143
public CharSequence getTitle() {
144144
return title;
145145
}
146+
147+
public int getId() {
148+
return title.hashCode();
149+
}
146150
}

android/WearScript/src/main/java/com/dappervision/wearscript/WearScriptsAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@ public View getView(int position, View view, ViewGroup parent) {
3434
textView.setText(info.getTitle());
3535
return view;
3636
}
37-
}
37+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.dappervision.wearscript;
2+
3+
import android.app.Activity;
4+
import android.graphics.Typeface;
5+
import android.support.v4.app.Fragment;
6+
import android.view.View;
7+
import android.view.ViewGroup;
8+
import android.widget.AdapterView;
9+
10+
import com.dappervision.wearscript.models.InstalledScripts;
11+
import com.google.android.glass.app.Card;
12+
import com.google.android.glass.widget.CardScrollAdapter;
13+
14+
import java.util.ArrayList;
15+
16+
//THE GDK IS STUPID STUPID STUPID.
17+
public class WearScriptsCardAdapter extends CardScrollAdapter {
18+
private final ArrayList<WearScriptInfo> scripts;
19+
private ArrayList<View> array;
20+
private final Typeface mRobotoLight;
21+
private final Activity activity;
22+
23+
public WearScriptsCardAdapter(Fragment fragment, InstalledScripts scripts){
24+
activity = fragment.getActivity();
25+
array = new ArrayList<View>();
26+
this.scripts = scripts.getWearScripts();
27+
for(int i = 0; i < this.scripts.size(); i++){
28+
array.add(cardFactory(this.scripts.get(i)));
29+
}
30+
31+
mRobotoLight = Typeface.createFromAsset(activity.getAssets(), "fonts/Roboto-Light.ttf");
32+
}
33+
@Override
34+
public int getCount() {
35+
return array.size();
36+
}
37+
38+
@Override
39+
public Object getItem(int i) {
40+
return scripts.get(i);
41+
}
42+
43+
@Override
44+
public View getView(int position, View convertView, ViewGroup parent) {
45+
if (convertView == null) {
46+
return setItemOnCard(this, array.get(position));
47+
} else {
48+
return setItemOnCard(this, convertView);
49+
}
50+
}
51+
52+
@Override
53+
public int findIdPosition(Object id) {
54+
for(int i = 0; i < array.size(); i++){
55+
if(array.get(i).getId() == (Integer) id){
56+
return i;
57+
}
58+
}
59+
return AdapterView.INVALID_POSITION;
60+
}
61+
62+
@Override
63+
public int findItemPosition(Object item) {
64+
for (int i = 0; i < array.size(); i++) {
65+
if (array.get(i).equals(item)) {
66+
return i;
67+
}
68+
}
69+
return AdapterView.INVALID_POSITION;
70+
}
71+
72+
public View cardFactory(WearScriptInfo info){
73+
Card card = new Card(this.activity);
74+
card.setText(info.getTitle().toString());
75+
View v = card.toView();
76+
v.setId(info.getId());
77+
return v;
78+
}
79+
}

android/WearScript/src/main/java/com/dappervision/wearscript/ui/ScriptListFragment.java

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,31 @@
55
import android.content.Context;
66
import android.content.Intent;
77
import android.content.IntentFilter;
8-
import android.graphics.Color;
9-
import android.graphics.drawable.ColorDrawable;
108
import android.os.Bundle;
11-
import android.support.v4.app.ListFragment;
9+
import android.support.v4.app.Fragment;
1210
import android.view.LayoutInflater;
1311
import android.view.View;
1412
import android.view.ViewGroup;
13+
import android.widget.AdapterView;
14+
import android.widget.LinearLayout;
15+
import android.widget.ListAdapter;
1516
import android.widget.ListView;
1617

1718
import com.dappervision.wearscript.HardwareDetector;
1819
import com.dappervision.wearscript.WearScriptInfo;
1920
import com.dappervision.wearscript.WearScriptsAdapter;
21+
import com.dappervision.wearscript.WearScriptsCardAdapter;
2022
import com.dappervision.wearscript.models.InstalledScripts;
23+
import com.google.android.glass.widget.CardScrollAdapter;
24+
import com.google.android.glass.widget.CardScrollView;
2125

22-
public class ScriptListFragment extends ListFragment {
26+
27+
public class ScriptListFragment extends Fragment {
28+
//private static final String TAG = "ScriptListFragment";
2329
private InstalledScripts mInstalledScripts;
24-
private ListView listView;
30+
private AdapterView adapterView;
2531
private Callbacks mCallbacks;
32+
private ListAdapter mListAdapter;
2633

2734
public static ScriptListFragment newInstance() {
2835
ScriptListFragment fragment = new ScriptListFragment();
@@ -47,7 +54,14 @@ public void onDetach() {
4754

4855
public void updateUI() {
4956
mInstalledScripts.load();
50-
((WearScriptsAdapter) getListAdapter()).notifyDataSetChanged();
57+
}
58+
59+
public ListAdapter buildListAdapter(){
60+
if(HardwareDetector.isGlass){
61+
return new WearScriptsCardAdapter(this, mInstalledScripts);
62+
}else{
63+
return new WearScriptsAdapter(this, mInstalledScripts);
64+
}
5165
}
5266

5367
@Override
@@ -58,28 +72,30 @@ public void onCreate(Bundle savedInstanceState) {
5872
intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
5973
intentFilter.addDataScheme("package");
6074
getActivity().registerReceiver(mPackageBroadcastReciever, intentFilter);
61-
setListAdapter(new WearScriptsAdapter(this, mInstalledScripts));
75+
mListAdapter = buildListAdapter();
6276
}
6377

6478
@Override
6579
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
66-
View v = super.onCreateView(inflater, container, savedInstanceState);
67-
listView = (ListView) v.findViewById(android.R.id.list);
68-
//Style things for Glass
69-
if (HardwareDetector.isGlass) {
70-
listView.setHorizontalScrollBarEnabled(false);
71-
listView.setVerticalScrollBarEnabled(false);
72-
listView.setSelector(new ColorDrawable(Color.TRANSPARENT));
73-
listView.setDivider(new ColorDrawable(Color.TRANSPARENT));
74-
listView.setDividerHeight(10);
80+
LinearLayout layout = new LinearLayout(getActivity());
81+
if(HardwareDetector.isGlass){
82+
CardScrollView view = new CardScrollView(getActivity());
83+
view.setAdapter((CardScrollAdapter) mListAdapter);
84+
view.activate();
85+
adapterView = view;
86+
}else{
87+
adapterView = new ListView(getActivity());
88+
adapterView.setAdapter(mListAdapter);
7589
}
76-
return v;
90+
adapterView.setOnItemClickListener(mOnItemClickListener);
91+
layout.addView(adapterView);
92+
return layout;
7793
}
7894

7995
@Override
80-
public void onListItemClick(ListView l, View v, int position, long id) {
81-
WearScriptInfo info = ((WearScriptsAdapter) getListAdapter()).getItem(position);
82-
mCallbacks.onScriptSelected(info);
96+
public void onResume() {
97+
super.onResume();
98+
adapterView.requestFocus();
8399
}
84100

85101
@Override
@@ -94,4 +110,12 @@ public void onReceive(Context context, Intent intent) {
94110
updateUI();
95111
}
96112
};
113+
114+
AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener() {
115+
@Override
116+
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
117+
WearScriptInfo info = (WearScriptInfo) mListAdapter.getItem(i);
118+
mCallbacks.onScriptSelected(info);
119+
}
120+
};
97121
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
4+
android:id="@+id/fragment_script_list" android:layout_height="fill_parent" android:layout_width="fill_parent">
5+
6+
<ListView
7+
android:layout_width="match_parent"
8+
android:layout_height="wrap_content"
9+
android:id="@+id/script_list"
10+
android:layout_gravity="center_horizontal" />
11+
</LinearLayout>

0 commit comments

Comments
 (0)