blob: 4c9dcd4b847dbca88eb0706ee3fa3d9152ae5807 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
package org.skia.viewer;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
public class StateAdapter extends BaseAdapter implements AdapterView.OnItemSelectedListener {
static final String NAME = "name";
static final String VALUE = "value";
static final String OPTIONS = "options";
ViewerActivity mViewerActivity;
JSONArray mStateJson;
public StateAdapter(ViewerActivity viewerActivity) {
mViewerActivity = viewerActivity;
try {
mStateJson = new JSONArray("[{\"name\": \"Please\", " +
"\"value\": \"Initialize\", \"options\": []}]");
} catch (JSONException e) {
e.printStackTrace();
}
}
public void setState(String stateJson) {
try {
mStateJson = new JSONArray(stateJson);
notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public int getCount() {
return mStateJson.length();
}
@Override
public Object getItem(int position) {
try {
return mStateJson.getJSONObject(position);
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mViewerActivity).inflate(R.layout.state_item, null);
}
TextView nameText = (TextView) convertView.findViewById(R.id.nameText);
TextView valueText = (TextView) convertView.findViewById(R.id.valueText);
Spinner optionSpinner = (Spinner) convertView.findViewById(R.id.optionSpinner);
JSONObject stateObject = (JSONObject) getItem(position);
try {
nameText.setText(stateObject.getString(NAME));
String value = stateObject.getString(VALUE);
JSONArray options = stateObject.getJSONArray(OPTIONS);
if (options.length() == 0) {
valueText.setText(value);
valueText.setVisibility(View.VISIBLE);
optionSpinner.setVisibility(View.GONE);
} else {
ArrayList<String> optionList = new ArrayList<>();
String[] optionStrings = new String[options.length()];
for(int i=0; i<options.length(); i++) {
optionList.add(options.getString(i));
}
optionSpinner.setAdapter(new ArrayAdapter<String>(mViewerActivity,
android.R.layout.simple_spinner_dropdown_item, optionList));
optionSpinner.setSelection(optionList.indexOf(value));
optionSpinner.setOnItemSelectedListener(this);
optionSpinner.setVisibility(View.VISIBLE);
valueText.setVisibility(View.GONE);
}
} catch (JSONException e) {
e.printStackTrace();
}
return convertView;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
View stateItem = (View) parent.getParent();
String stateName = ((TextView) stateItem.findViewById(R.id.nameText)).getText().toString();
String stateValue = ((TextView) view).getText().toString();
mViewerActivity.onStateChanged(stateName, stateValue);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// do nothing
}
}
|