2016-03-14 3 views
0

У меня есть recyclerview, и у него есть edittext в каждой строке.
Число строк от 50 до 60. Я получаю количество строк с сервера.
Как я могу получить текст каждого edittext?
Может ли это действие дать мне ошибку исключения?Получить данные из каждой строки recyclerview

извините за мой плохой английский.

ответ

1

Вы можете реализовать эту логику в адаптере и вид держателя:

class YourAdapter extend RecyclerView.Adapter<YourAdapter.ViewHolder> { 
    List<String> yourEditTextContents = ...; 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
      holder.yourEditText.setTag(position); 
      holder.yourEditText.setText(yourEditTextContents.get(position)); 
    } 

    class ViewHolder extend RecyclerView.ViewHolder { 
      EditText yourEditText; 
      public ViewHolder(View root){ 
       ... 
       yourEditText = root.findViewById(); 
       yourEditText.addTextChangedListener(new TextWatcher() { 
        @Override 
        public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

        } 

        @Override 
        public void onTextChanged(CharSequence s, int start, int before, int count) { 

        } 

        @Override 
        public void afterTextChanged(Editable s) { 
         int position = (int)yourEditText.getTag(); 
         yourEditTextContents.set(position, s.toString()); 
        } 
       }); 
      } 
    } 
} 

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

yourEditTextContents.get(position) 
1

Как я могу получить текст каждого edittext?

Вы не можете получить текст из всех 50. Вы можете получать значения только тех, которые в данный момент находятся на экране. Когда вы используете RecyclerView, у вас есть только EditText объектов, которые видны на экране. Когда вы прокручиваете список, EditText s повторно используются, то есть у вас никогда не будет объектов 50 EditText, хотя у вас есть 50 строк.

Как вы загружаете данные в эти EditText? У вас уже есть все данные в момент загрузки в EditText. Если вы хотите получить данные после того, как пользователь набрал что-то, используйте OnTextChangedListener, чтобы получить измененный текст и обновить свою модель.

может ли это действие дать мне ошибку исключения?

Опять же, нет 50 EditText s, поэтому это невозможно. Если вам действительно нужно получать значения из представлений, вы можете получить их только из видимых. Это не даст вам никаких исключений или ошибок.

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