Это довольно изысканное поведение реализовать ... Но эй, если вы хотите сделать это, вот один из возможных подходов:
Ваш ListView потребуется пользовательский адаптер, реализованный с использованием BaseAdapter. Этот CustomBaseAdapter будет скопирован списком списков объектов, «стек выбора» и целочисленным держателем состояния.
Список списков объектов будет составлять матрицу так же, как и ваше изображение, содержащее соответствующие списки «SN, продукт, год, версия, цвет, пользовательский текст», которые будут использоваться вместе с государственным держателем, который позволит вам узнать в каких из этих списков находится режим и в каком режиме он будет идти.
Ваш «стек выборок» поможет вам выполнить фильтрацию, необходимую пользователю, исходя из того, на каком уровне стека вы находитесь в настоящее время, который также будет контролироваться держателем состояния.
Каждый раз, когда пользователь нажимает на одну строку, ваш ListView запускает onItemClick, который вызывает ваш адаптер, чтобы добавить пользовательский выбор в «стек выбранных», и изменить его состояние, чтобы обновить данные на основе возможной возможности держателя состояния. Помните, что ваш государственный держатель не может быть больше, чем количество ваших столбцов в столбцах, так как оно содержит отображаемый столбец.
«Измените его состояние» часть выше, просто изменив держатель текущего состояния и вызывая notifyDataSetChanged, предполагая, что вы реализуете метод getView на вашем адаптере, который принимает к сведению текущее состояние держателя состояния и текущих выборов «стек выборок» для фильтрации содержимого списка, который он отобразит соответствующим образом.
ListView обновит себя, и ваш метод getView от вашего адаптера получит представления на основе вашего текущего состояния.
Извините за большой ответ, я могу попытаться объяснить, если необходимо.
Человек, ваше приложение действительно приятно! Выглядит очень похоже на операционную систему Windows. ^^ (jk) –