Как получить доступ ко всем картам в рециркуляторе, по щелчку элемента определенного карты - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть главное окно просмотра, которое отображает мой основной вид карты. Теперь в этом основном карточном видении есть детское рециркуляционное представление, которое содержит детское карточное представление. Теперь, когда я щелкаю по любому из основных карт, становится виден дочерний рециклер с дочерними картами. Если я снова щелкну по этому основному виду карты, то дочерний просмотрщик отходов станет невидимым.

Теперь, если я щелкну по основному просмотру машины, то его дочерний просмотрщик будет виден. Теперь, если я нажму другой основной вид карты, появится его дочерний обзор. вот так

enter image description here

Что я хочу, так это то, что если я щелкаю по другому основному виду карты, то, если какие-либо другие дочерние виды видны, то оно должно стать невидимым. Другими словами, дочерний rewcyclerview основного вида карты, на который я нажимаю, должен быть только открытым. Все остальные виды повторного просмотра ребенка должны быть невидимыми / закрытыми.

Теперь мне нужен способ получить доступ ко всем основным обзорам автомобилей в главном окне повторного просмотра, когда я щелкаю конкретное основное представление карты, чтобы можно было сделать просмотр детского повторного использования. из всех этих основных карт невидимых.

Надеюсь, я ясно изложил свою точку зрения.

Я хочу, чтобы в одно и то же время открывалось только одно дочернее представление ..

enter image description here

Это onBindViewHolder основного адаптера держателя Recyclerview

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

    MSeasonTanks mSeasonTanks=mSTankList.get(position);
    MoultingDataEntry moultingDataEntry=moultList.get(position);
    holder.textViewOne.setText("Tank Number : "+mSeasonTanks.getTName());

    ChildRVAdapter childRVAdapter=new ChildRVAdapter(moultingDataEntry,mSeasonTanks.getTID(),holder);

    holder.childRecyclerView.setLayoutManager(new LinearLayoutManager(context));
    holder.imageViewDirection.setImageResource(R.drawable.ic_expand);

    holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(holder.childRecyclerView.getVisibility()==View.VISIBLE){
                holder.childRecyclerView.setVisibility(View.GONE);
                holder.imageViewDirection.setImageResource(R.drawable.ic_expand);
            }else{
                holder.childRecyclerView.setVisibility(View.VISIBLE);
                holder.imageViewDirection.setImageResource(R.drawable.ic_collapse);
            }
        }
    });
    holder.childRecyclerView.setAdapter(childRVAdapter);
}

Таким образом, в основном методе carView onClick для доступа ко всем основным картам, чтобы я мог получить их дочерние повторные просмотры. невидим, если он открыт.

Заранее спасибо ..

1 Ответ

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

Что я буду предлагать, так это.

-> Предположим, у вас есть данные для основного Recyclerview, такие как MainRecyclerItemData, он должен иметь один логический флаг, isExpanded

-> isExpanded = true (Inner Recyclerview является видимым)

-> isExpanded = false (Внутреннее представление Recycler скрыто)

-> Сейчас, когда пользователь щелкает по основному элементу утилизатора, передает идентификатор MainRecyclerItemData для выбранного элемента в вашу деятельность через интерфейс для Метод предположим, что (OuterItemClicked (String id)).

-> Теперь l oop весь список, а для всего списка сделайте isExpanded = false, за исключением элемента с заблокированным идентификатором (поскольку он делает его истинным).

-> Теперь вызовите adapter.notifydatasetchanged ()

 //In onBindViewHolder() you should have code to handle isExpanded flag, 
if(isExpanded){
// Show inner recyclerview
}else{
// Hide inner recyclerview
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...