Spinner в Jasonette
Я не могу найти Spinner в списке компонентов Jsonette. Есть ли какая-либо замена, чтобы позволить пользователю выбрать элемент из списка? или мне следует разработать компонент, как описано в документации Jaonette?
1 ответ
Решение
Я не мог найти счетчик, поэтому написал свой (очень примитивно). Ниже приведен код:
public class JasonSpinnerComponent {
public static View build(View view, final JSONObject component, final JSONObject parent, final Context context) {
if(view == null) {
return new Spinner(context);
} else {
try {
String data = component.getString("data");
final String[] spinnerData = data.split("\\|");
view = JasonComponent.build(view, component, parent, context);
JSONObject style = JasonHelper.style(component, context);
String type = component.getString("type");
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
(context, android.R.layout.simple_spinner_item,
spinnerData);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout
.simple_spinner_dropdown_item);
((Spinner)view).setAdapter(spinnerArrayAdapter);
((Spinner)view).setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
try {
((JasonViewActivity) context).model.var.put(component.getString("name"), spinnerData[position]);
} catch (JSONException e) {
Log.e("Warning", e.getStackTrace()[0].getMethodName() + " : " + e.toString());
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
((Spinner)view).requestLayout();
return view;
} catch (Exception e){
Log.d("Warning", e.getStackTrace()[0].getMethodName() + " : " + e.toString());
return new View(context);
}
}
}
}
Это работает для jasonette, как это:
{
"type": "spinner",
"name": "gender",
"data": "Male|Female"
}
Позвольте мне повторить, это very
Примитивный и претерпит много изменений в будущем. Но это может быть хорошей отправной точкой для тех, кто ищет спиннер. Я буду рад, если это помогло вам.