Как получить не сфокусированный элемент recyclerview, используя позицию android

Я хочу динамически обновлять значение textview элемента адаптера recyclerview с некоторыми данными.

Для этого я делаю так:

View mRecyclerView = linearLayoutManager.getChildAt(viewPosition);

                TextView textView=(TextView) mRecyclerView.findViewById(R.id.text_number);
                Integer chatCount = Integer.parseInt(textView.getText().toString());
                chatCount++;
                textView.setText(chatCount + "");
                jobsFragmentRecyclerViewAdapter.notifyItemChanged(viewPosition);

Но приведенное выше кодирование работает только для видимых представлений на экране. Для невидимых представлений я получаю исключение нулевого указателя для mRecyclerView. Может ли кто-нибудь помочь мне в том, как получить элемент recyclerview, который не находится в фокусе.

заранее спасибо


person Manikanta    schedule 30.10.2015    source источник


Ответы (1)


Где-то в вашем коде у вас должен быть adapter, который заполняет данные RecyclerView. У этого adapter есть метод onBindViewHolder(), который заполняет каждый ViewHolder. Вот где вы должны кодировать, как должен выглядеть каждый viewholder.

Например: у вас может быть список строк (по одной для каждого зрителя). onBindViewHolder возьмет один String и установит текст TextView в качестве этой строки. Таким образом, будет достаточно изменить одну строку этого списка (и вызвать notifyItemChanged()).

person Pelocho    schedule 30.10.2015
comment
Спасибо pelocho за ответ. Предоставленное вами решение предназначено для начальной настройки данных в адаптере. Но я хочу динамически обновлять элемент адаптера (исключительно), указав его позицию linearlayoutmanager (который управляет им) или recyclerview ( который держит) это. Но все методы getChildView (position) и т. д., которые возвращают видимого дочернего элемента. Я хочу, чтобы представление не было в фокусе, предоставляя index. Надеюсь, вы ясно поняли мой вопрос - person Manikanta; 30.10.2015
comment
Да. Решение, которое я дал, также работает для начальной настройки и обновления элементов. Обновите источник ваших данных и вызовите notifyItemChanged() (или notifyDataSetChanged(), если вы хотите обновить все) - person Pelocho; 30.10.2015