2016-04-19 3 views
0

У меня есть Горизонтальный RecyclerView. Что бы я хотел сделать, во время выполнения скрывать 2 TextViews всех элементов из адаптера.RecyclerView: переключение видимости детей всех видимых строк

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

Вы можете видеть это как «простой макет» с переключателем «Комплексная компоновка».

Я знаю, что я должен получить детей RecyclerView через назначенный RecyclerView.Adapter, но это действительно лучшее решение?

Большое спасибо за любую помощь.

Мой код:

public ViewHolder(View v) { 
    super(v); 
    // Some logic here to find children 
    v.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Get the adapter here, loop all visible children, and change visibility? 
      // Following line will do for clicked item only: 
      tvwind.setVisibility(tvwind.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE); 
     } 
    }); 
} 

Из приведенного выше кода, я могу изменить видимость щелкнули пункта, но не для всех видимых элементов.

+0

Возможно, попробуйте получить подсчет числа детей и используйте функцию childAt() и переключите видимость? – Keshav

+0

Большое спасибо, я попытался изменить OP и объяснить лучше, но моя проблема состояла бы в том, чтобы перебирать все строки и выполнять эту операцию. –

+0

Теперь я понимаю лучше, вы можете попробовать использовать переменную для проверки видимости вкл/выкл и использовать эту переменную внутри onBindViewHolder, а затем вызвать notifyDataSetChanged? – Keshav

ответ

0

Как обсуждалось, это может быть достигнуто путем изменения видимости внутри адаптера BindViewHolder().

+0

Отрицательный эффект от этого: список будет прокручиваться до позиции 0 и потерять текущую позицию. –

+0

@Waza_Be: вы можете сохранить позицию и вызвать setSelected() – Keshav

Смежные вопросы