Android: перепривязка ListView или RecyclerView без обновления заголовка - PullRequest
0 голосов
/ 01 мая 2020

Мне нужно обновить sh / rebind содержимого ListView или RecyclerView без обновления самого элемента заголовка.

Любые советы о том, как этого добиться?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Предполагая, что header имеет значение position 0:

Допустим, вы хотите связать заголовок один раз, а затем прекратить связывать его после refre sh:

Когда вы вызываете notifyDataSetChanged() для перезагрузки, метод onBindViewHolder() в адаптере вызывается снова для обновления sh данных, помня об этом. Вы можете установить логическое значение, чтобы связывать заголовок один раз. Так что даже если onBindViewHolder() вызывается несколько раз, заголовок будет привязан один раз.

class Adapter extends ...........{

//use a boolean as a flag
private boolean bindHeader = true;
........
.......
.......

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

..........

if(position == 0 && bindHeader){

//bind the header only for the first time
......
......

//then stop binding after refresh
bindHeader = false;

}else if(position > 0){

//bind the reset of the items here


}


}

..............

..............



}
0 голосов
/ 01 мая 2020

Да, вы можете сделать это. Как правило, ваш заголовок имеет 0 позицию в списке, поэтому заголовок находится в верхней части списка. Таким образом, для ваших списков, например, RecyclerView, вы должны инициализировать адаптер (в случае RecyclerView вы должны создать аксессор класса RecyclerView.Adapter), и у этого адаптера есть много методов для обновления данных в адаптере (notifyDataSetChanged(), notifyItemInserted() et c.) И вы можете использовать один из этих методов, в зависимости от вашей цели. Итак, в вашем случае вы можете использовать notifyItemRangeChanged(int positionStart, int itemCount).

Более подробную информацию об этих методах можно найти в официальной документации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...