2016-07-08 2 views
0

Я создаю динамическое число editTexts и хочу, в конце концов, вытащить идентификатор для каждого вызова .getText() в editText.Не удается запрограммировать SetText ID

Однако я заметил, что трудно программно установить идентификатор, поэтому я использую метод .setTag() вместо того, чтобы:

private void createAnswerChoice(int answerNumber) { 
    ViewGroup layout = (ViewGroup) mRootView.findViewById(R.id.create_poll_questions_answer_layout); 
    EditText editText = new EditText(getActivity()); 
    editText.setHint(getResources().getString(R.string.answer_text) + " " + answerNumber); 
    editText.setSingleLine(true); 
    editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 
    String editTextID = ((getResources().getString(R.string.created_answer_editText_id))+String.valueOf(answerNumber)); 
    editText.setTag(editTextID); 
    Toast.makeText(getActivity().getApplicationContext(), editTextID, Toast.LENGTH_SHORT).show(); 
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
    editText.setLayoutParams(layoutParams); 
    TextInputLayout newAnswer = new TextInputLayout(getActivity()); 
    newAnswer.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    newAnswer.addView(editText, layoutParams); 
    layout.addView(newAnswer); 
} 

Как мне получить значение каждого EditText, если я знаю тег, а не идентификатор? Кроме того, какова цель метода .setTag() (как это соотносится с .setID()?)

+2

Что такое проблема с установкой ID? – pratnala

+0

Если вы используете андроид, рекомендуется использовать xml вместо программного создания представлений. Гораздо проще вносить изменения и дает более чистый код. – suku

+0

Я создаю динамические представления на основе числа, которое выбирает пользователь, поэтому статический XML (насколько мне известно) не будет адекватным – tccpg288

ответ

0

Я не рекомендую использовать теги для получения представлений из вашей иерархии, но если вы должны это сообщение SO описывать, как для этого: https://stackoverflow.com/a/16262479/6526330.

Метки должны использоваться, когда вам нужно кэшировать некоторые данные в виде, чтобы захватить позже, когда у вас есть представление снова (да, я знаю очень общий). Некоторые примеры могут быть, если вы используете держатель в виде списка или если у вас много просмотров на экране и вы хотите, чтобы для каждого представления был доступен глобальный прослушиватель кликов и слушателей. Я украл оба этих примера с the answers on this post, которые лучше описывают варианты использования, чем я могу.

0

findViewById() и findViewWithTag() - это методы, предназначенные для получения ссылки на View, которая была завышена от XML.

Если вы создаете View, у вас есть их уже тогда нет необходимости использовать эти методы. Держите ссылку на View где-нибудь.

2

создать файл ресурсов (id.xml) в Рез/значений/id.xml

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    <item 
    type="id" 
    name="edittext_hello" /> 
    </resources> 

, а затем установить,

editText.setId(R.id.edittext_hello); 
Смежные вопросы