Получить значение выбранного представления в ViewSwitcher

Я использую ViewSwitcher для переключения между двумя представлениями (как и предполагалось).

Вот код ViewSwitcher :

final ViewSwitcher viewSwitcher = new ViewSwitcher(getApplicationContext());

                TextView t = new TextView(this);
                [...]
                t.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        viewSwitcher.showNext();
                    }
                });

                viewSwitcher.addView(t,
                        new TableRow.LayoutParams(
                                TableRow.LayoutParams.MATCH_PARENT,
                                TableRow.LayoutParams.MATCH_PARENT, 1f));

                final String key = (String)map.keySet().toArray()[n];

                if(key.contains("EditText"))
                {
                    EditText e = new EditText(this);
                    [...]
                    e.setOnLongClickListener(new View.OnLongClickListener() {
                        @Override
                        public boolean onLongClick(View view) {
                            viewSwitcher.showPrevious();
                            return true;
                        }
                    });

                    viewSwitcher.addView(e,
                            new TableRow.LayoutParams(
                                    TableRow.LayoutParams.MATCH_PARENT,
                                    TableRow.LayoutParams.MATCH_PARENT, 1f));
                }
                else if (key.contains("Spinner"))
                {
                            Spinner spin = new Spinner(getApplicationContext());
                            [...]
                            spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                                @Override
                                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                                    if(adapterView.getSelectedItemPosition() == 0)
                                        viewSwitcher.showPrevious();
                                }

                                @Override
                                public void onNothingSelected(AdapterView<?> adapterView) {

                                }
                            });

                            viewSwitcher.addView(spin,
                                    new TableRow.LayoutParams(
                                            TableRow.LayoutParams.MATCH_PARENT,
                                            TableRow.LayoutParams.MATCH_PARENT, 1f));
                }

Дело в том, что я пытался поместить ViewSwitcher в список, чтобы потом получить значения.

(Как это работало раньше, когда я использовал только EditText), но на самом деле это не работает, потому что я не могу получить значения того, что написано в представлениях ViewSwitcher.

Итак, вот мой вопрос: Знаете ли вы, как получить значение представления, которое в данный момент выбрано в ViewSwitcher, чтобы я мог добавить его в список, чтобы использовать его позже?

Заранее спасибо.


person Reaperino    schedule 08.08.2018    source источник


Ответы (1)


Вы можете использовать метод getCurrentView(), чтобы получить текущий отображаемый вид.

Чтобы получить значение из представления, приведите представление и получите текст из этого представления. Например,

EditText temp = (EditText) viewSwitcher.getCurrentView();
String s = temp.getText().toString();

вы можете проверить тип текущего представления и получить свойство, которое вы хотите.

View v = viewSwitcher.getCurrentView();
if (v instanceof EditText) {
     //code...
} else if (v instanceof Spinner) {
     //code...
}
person Abhay Koradiya    schedule 08.08.2018
comment
Я знал, что getCurrentView() существует, но он работал, я просто сделал немного по-другому. Я поместил ViewSwitcher в список, и после этого, когда я хотел получить значение, я использовал getCurrentView() в другой функции, чтобы получить значения в зависимости от того, какой это был вид. Спасибо приятель ! - person Reaperino; 08.08.2018
comment
Вы хотите получить вид View? - person Abhay Koradiya; 08.08.2018
comment
Проверьте мой обновленный ответ. Это может помочь вам. - person Abhay Koradiya; 08.08.2018
comment
Ваш первый ответ уже достаточно помог мне, я просто немного адаптировался к своим требованиям, большое спасибо за ваше время! - person Reaperino; 09.08.2018