У меня есть два ListView в XML, а именно: lvPrograms & lvEpisodes . Они размещены горизонтально.
Я заполняю эти ListViews из веб-службы.
Когда загружается действие, я вызываю веб-службу для получения данных для lvPrograms . Когда я получаю Программы , я загружаю Эпизоды для первой программы в найденном списке. и установите первый элемент lvPrograms как выбранный / выделенный, чтобы показать пользователю, что загруженные Эпизоды предназначены для этого элемента Программы. Я установил это следующим образом:
private void highlightSelectedProgram(int _previousSelectedProgramIndex, int _currentSelectedProgramIndex) {
ListView allProgramsList = (ListView) findViewById(R.id.allProgramsList);
//Get the last selected List Item
View selectedChild = allProgramsList
.getChildAt(_currentSelectedProgramIndex);
//_previousSelectedProgramIndex & _currentSelectedProgramIndex are to keep track
//of currently/previously selected PROGRAM index
if (selectedChild != null) {
// get selected shape
Drawable shape = getResources().getDrawable(
R.drawable.selected_item_selector);
//change selected item background to be highlighted
selectedChild.setBackgroundDrawable(shape);
//change previous item, if any (is not -1), to normal state
if (_previousSelectedProgramIndex != ._currentSelectedProgramIndex && _previousSelectedProgramIndex != -1) {
TextView previousChild = (TextView) allProgramsList
.getChildAt(_previousSelectedProgramIndex);
previousChild.setBackgroundResource(R.drawable.item_selector);
}
}
}
Я вызываю этот метод, когда пользователь нажимает на элемент списка PROGRAMS , чтобы выделить элемент, чьи EPISODES загружаются в lvEpisodes listview.
Похоже на следующее изображение.
Проблемы возникают только тогда, когда ListView имеет больше элементов, чем его видимая область. Поэтому, когда я щелкаю первый элемент, его фон изменяется с помощью приведенного выше кода, НО какой-то другой элемент, который находится среди невидимых элементов, также меняет фон. ПОЧЕМУ ??
Мне кажется, я что-то упустил ИЛИ обработка изначально невидимых элементов списка отличается.
ИЛИ Вы можете указать мне способ, которым я могу объявить фоновый селектор для того элемента, который ЩЕЛКНУТ ... и только выделенный элемент останется выделенным. Так что, если пользователь нажимает на какой-то другой элемент в списке, который находится среди скрытых элементов, этот элемент выделяется ... поэтому в любой момент в списке должен быть один выделенный элемент ... Это будет здорово, если это возможно.
любая помощь очень ценится, так как дата релиза близка.
Спасибо