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 Примитивный и претерпит много изменений в будущем. Но это может быть хорошей отправной точкой для тех, кто ищет спиннер. Я буду рад, если это помогло вам.

Другие вопросы по тегам