2015-12-12 3 views
2

ViewSwitcher может использоваться только для двух детей. Но для группы текстов, которые должны быть преобразованы в Edittexts, какими могут быть пути?Как преобразовать группу TextView в EditText в андроид без ViewSwitcher?

+0

вы можете создать метод и называть его в цикле! почему нет? –

+0

Сделайте две группы представлений, одну с TextViews и другую с EditText. Используйте их как дочерние элементы вашего ViewSwitcher. – Abdullah

+0

Пожалуйста, повысьте свой ответ, если он решит вашу проблему :) – Subby

ответ

2

Это достаточно легко заменить представления для других взглядов, но конвертирование - Я так не думаю.

Для замены точки зрения, вы можете просто сделать что-то вроде следующего:

LayoutInflater inflater = LayoutInflater.from(this); 
View view = inflater.inflate(R.layout.edit_texts_layout, null); 

viewSwitcher.removeAllViews(); 
viewSwitcher.addView(view.findViewById(R.id.first_edit_text)); 
viewSwitcher.addView(view.findViewById(R.id.second_edit_text)); 

Так что же здесь происходит?

1) Вы создаете макет под названием edit_texts_layout который содержит два EditText «ю.ш. с идентификаторами: first_edit_text и second_edit_text.

2) Затем вы надуваете это в своем Activity или Fragment.

3) Затем вы удаляете все существующие виды в своем ViewSwitcher, поскольку, как вы по праву сказали, в ViewSwitcher могут быть только два вида.

4) Затем вы добавляете два EditText «S внутри этой ViewSwitcherview.findViewById() по

Также ...

Было бы целесообразно иметь другую раскладку под названием text_views_layout и сделать то же самое, так что вы можете переключить EditText с помощью TextView.

Но почему редактор EditText находится внутри макета и не создает их программно?

Хороший вопрос. Виды должны жить в макетах и ​​жить отдельно от кода , если возможно. Это облегчает жизнь, когда вы можете работать с представлением в макете, поскольку у вас есть автозаполнение XML и экран предварительного просмотра, чтобы вы точно знали, как выглядит этот вид, - впоследствии избавляя вас от любых неприятных сюрпризов.

Есть ли другие альтернативы этому?

Существует всегда более чем один способ кожи кошки, и эта ситуация ничем не отличается. Вы могли бы создать TWO ViewSwitcher и с разными дочерними представлениями. То, что вам нужно будет сделать, это переключить видимость на View.GONE и View.VISIBLE в качестве альтернативы. Оговорка? Будет проблематично поддерживать как в памяти, так и выполнять любые действия над дочерними представлениями, поскольку вам нужно будет помнить, какой из них видим, а какой нет. С моим первоначальным ответом вам не придется беспокоиться.

Смежные вопросы