У меня есть просмотр списка, и у каждого элемента есть заголовок, некоторая информация и пара изображений, которые я использую в качестве кнопок редактирования / удаления.Я не хочу показывать эти «кнопки», пока пользователь не выберет строку.Я могу сделать «кнопки» невидимыми, используя:
DeleteButton.setVisibility(View.INVISIBLE);
EditButton.setVisibility(View.INVISIBLE);
в моем BindView.
Я могу сделать кнопки видимыми в onListItemClick:
ImageView DeleteButton = (ImageView) v.findViewById(R.id.button_delete);
ImageView EditButton = (ImageView) v.findViewById(R.id.button_edit);
DeleteButton.setVisibility(View.VISIBLE);
EditButton.setVisibility(View.VISIBLE);
Чего я не могу сделать, так это сделать "кнопки" невидимыми при выборе другого элемента или прокрутке.
Самым близким, что я нашел, было выполнить цикл по элементам списка в текущем представлении и установить их все как невидимые, прежде чем сделать выбранный видимым:
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
\\loop through all the items and set them back to invisible
for (int i=0;i<=l.getLastVisiblePosition();i++){
View vChild = l.getChildAt(i);
ImageView DeleteButton = (ImageView) vChild.findViewById(R.id.button_delete);
ImageView EditButton = (ImageView) vChild.findViewById(R.id.button_edit);
DeleteButton.setVisibility(View.INVISIBLE);
EditButton.setVisibility(View.INVISIBLE);
}
\\set the selected one visible
ImageView DeleteButton = (ImageView) v.findViewById(R.id.button_delete);
ImageView EditButton = (ImageView) v.findViewById(R.id.button_edit);
DeleteButton.setVisibility(View.VISIBLE);
EditButton.setVisibility(View.VISIBLE);
}
Как вы можете догадаться ... только этот подходработает, если у вас есть несколько элементов.
Я думал о добавлении поля в базу данных SQLite, который мой список использует для отслеживания видимости кнопок (аналогично тому, что вы делаете для флажков), но это казалось глупым.Пожалуйста, скажите мне, что есть другой способ.