Обновление фрагмента текста textView из класса адаптера после удаления элемента списка - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть фрагмент с recyclerView.

Во фрагменте есть текстовое представление, которое показывает количество элементов из recyclerView.

На каждом элементе recyclerView есть кнопка для удаления элемента из recyclerView:

В адаптере:

subjects.remove(holder.getAdapterPosition());
notifyItemRemoved(holder.getAdapterPosition());
notifyItemRangeChanged(position,subjects.size());

где subject - это список, который заполняет recycleview.

Эти три строки действительно удаляют элемент из recyclerView и обновляют размер списка.

Мне нужно одновременно обновить текстовое представление из фрагмента, которое показывает количество элементов в представлении реселлера, передавая новое значение из subjects.size () во фрагмент как текст для просмотра текста.

РЕДАКТИРОВАТЬ

public class RecyclerViewFollowingMiosBusquedaCardViewAdapter extends RecyclerView.Adapter<RecyclerViewFollowingMiosBusquedaCardViewAdapter.ViewHolder> {

    Context context;

    List<UsuariosBuscarFollowing> subjects;
public RecyclerViewFollowingMiosBusquedaCardViewAdapter(List<UsuariosBuscarFollowing> getDataAdapter, Context context){

    super();

    this.subjects = getDataAdapter;

    this.context = context;



}


@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_amigos_following_busqueda, parent, false);

    ViewHolder viewHolder = new ViewHolder(view);

    return viewHolder;
}

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

Фрагмент. Инициализация адаптера:

txtNumFollowers.setText(numFollowers+" "+getResources().getString(R.string.followers));


        recyclerViewadapterFollowers = new RecyclerViewFollowersMiosBusquedaCardViewAdapter(subjectsListFollowers, getActivity());
        recyclerViewFollowers.setAdapter(recyclerViewadapterFollowers);

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Начните с создания интерфейса в новом файле в вашем проекте

public interface onItemRemovedFromListListener{

void onItemRemoved(String text);
}

в вашем фрагменте

class MyFragment extends Fragment implements onItemRemovedFromListListener{



//pass the listener to the adapter

........
recyclerViewadapterFollowers = new RecyclerViewFollowersMiosBusquedaCardViewAdapter(subjectsListFollowers, getActivity(),this);
recyclerViewFollowers.setAdapter(recyclerViewadapterFollowers);

}

@override
public void onItemRemoved(String text){

//update your text view
txtNumFollowers.setText(text);

}


}

в вашем адаптере

//include a new field for listener
........
private onItemRemovedFromListListener listener;
.......

//constructor

public RecyclerViewFollowingMiosBusquedaCardViewAdapter(List<UsuariosBuscarFollowing> getDataAdapter, Context context , onItemRemovedFromListListener listener){

    super();

    this.subjects = getDataAdapter;

    this.context = context;

    this.listener = listener;



}

//now when you remove item from adapter notify the listener the fragment method will fire

subjects.remove(holder.getAdapterPosition());
notifyItemRemoved(holder.getAdapterPosition());
notifyItemRangeChanged(position,subjects.size());

//send text to update
listener.onItemRemoved("the text that you want to update goes here");
0 голосов
/ 23 апреля 2020

Попробуйте использовать свой список тем в качестве живых данных

LiveData<List<Subject>> subjects = new MutableLiveData<>();

Затем просмотрите свой список и прослушайте изменения. И когда вы получите новый интерфейс обновления списка в соответствии с вашим textView.

   subjects.observe(this, subjects -> {
       // update your textView here

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