Как выбрать многозначное значение в обзоре - PullRequest
0 голосов
/ 13 июня 2019

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

holder.images.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (holder.checked.getVisibility() == View.VISIBLE) {

                holder.checked.setVisibility(View.GONE);



            } else if (holder.checked.getVisibility() == View.GONE) {


                holder.checked.setVisibility(View.VISIBLE);

            }
        }
    });

Ответы [ 4 ]

1 голос
/ 13 июня 2019

Вот это решение, которое я создал arrylist и поместил размер данных

public static ArrayList<Integer> dataSize=new ArrayList<>();

и перешел к адаптеру

  holder.checked.setVisibility(idpositions.get(position)==0?View.GONE:View.VISIBLE);

    holder.images.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (dataSize.size()>0) {

                if (holder.checked.getVisibility() == View.VISIBLE) {

                    holder.checked.setVisibility(View.GONE);

                    dataSize.set(position,0);

                } else if (holder.checked.getVisibility() == View.GONE) {

                    dataSize.add(position,data.getId());

                    holder.checked.setVisibility(View.VISIBLE);

                }

            }
        }
    });

и, нажав на кнопку, просто получил этот массив и получил выбранное значение

  if(dataSize.size()>0){

        for (int i = 0; i < dataSize.size(); i++) {

            if (dataSize.get(i)==0){
                continue;
            }else {
                ids= ids+String.valueOf(dataSize.get(i))+",";
            }

        }

        Toast.makeText(this, ids, Toast.LENGTH_SHORT).show();

    }
1 голос
/ 13 июня 2019

Использовать список для обработки выбранных вами предметов или позиций

объявить список выбранных товаров магазина

private List<Integer> selectedPositions=new ArrayList();

обновить код в onBindViewHolder, как показано ниже

holder.checked.setVisibility(selectedPositions.contains(position)?View.VISIBLE:View.GONE);
holder.images.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (selectedPositions.contains(position)) {
                    holder.checked.setVisibility(View.GONE);
                      selectedPositions.removeAt(selectedPositions.indexOf(position));
                    } else  {
                    holder.checked.setVisibility(View.VISIBLE);
                    selectedPositions.add(position);

            }
        }
    });
0 голосов
/ 13 июня 2019

Создайте класс интерфейса следующим образом:

public interface ItemSelectedListener{
    void onItemSelected(int selectedposition);
}

В вашем адаптере инициализируйте ваш интерфейс;

    private List<ItemSelectedListener> mItemSelectedSubscribers = new ArrayList<ItemSelectedListener>();

Добавьте этот метод в свой адаптер;

public void subscribeItemSelection(ItemSelectedListenerlistener) {
        mItemSelectedSubscribers .add(listener);
    }

Установите этот цикл в событиях щелчка;

for (ItemSelectedListener listener : mMediaSelectedSubscribers) {
    listener.onItemSelected(position);
                }

В своей деятельности реализуйте свой интерфейс, и вы установите внедренные методы.эти методы выглядят так:

int selectedPosition;
    @Override
        public void onMediaSelected(int position) {
            selectedPosition = position;
        }

Когда вы делаете это, вы можете использовать выбранную вами позицию, где вы хотите в своей деятельности

Надеюсь, что эта помощь!

0 голосов
/ 13 июня 2019

Теперь вам нужно объявить список для хранения выбранных идентификаторов

private List<DATA_TYPE> selectedIds = new ArrayList();

Что вы можете сделать, так это объявить один isSelected логический объект в вашей модели. В методе onBindViewHolder установите видимость как

if (YOUR_POJO.isSelected()) {
   holder.checked.setVisibility(View.VISIBLE);
} else {
   holder.checked.setVisibility(View.GONE);
}

Когда вы нажимаете на изображение, проверьте, было ли оно уже выбрано, исходя из того, что вы можете добавить / удалить его идентификатор

holder.images.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if(YOUR_POJO.isSelected()){
             YOUR_POJO.setSelected(false);
             if (selectedIds.contains(YOUR_POJO.getId()){
                selectedIds.remove(YOUR_POJO.getId());
             }
        } else {
             YOUR_POJO.setSelected(true);
             selectedIds.add(YOUR_POJO.getId());
        }
        notifyItemChanged(holder.getAdapterPosition(), YOUR_POJO);
    }
});

Надеюсь, это поможет.

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