Как да получите нефокусиран елемент 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 за отговора. Решението, което предоставихте, е за първоначална настройка на данни в adapter.but това, което искам, е динамично да актуализирам елемента на адаптера (изключително), като дам позицията му на linearlayoutmanager (който го управлява) или recyclerview( който държи) го .Но всички методи getChildView(position) и т.н., които връщат видимо дете. Искам изгледа, който не е на фокус, като предоставя индекса. Надявам се, че сте разбрали ясно въпроса ми - person Manikanta; 30.10.2015
comment
Да направих го. Решението, което дадох, работи и за първоначална настройка и актуализиране на елементи. Актуализирайте източника на вашите данни и се обадете на notifyItemChanged() (или notifyDataSetChanged(), ако искате да актуализирате всичко) - person Pelocho; 30.10.2015