У меня есть ListView с методом setOnItemLongClickListener. Каждый раз, когда я выбираю элементы списка, некоторые элементы списка в ListView выбираются автоматически. Вот мой код
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
String present =listView.getItemAtPosition(position).toString();
presentStudent.add(present);
parent.getChildAt(position).setBackgroundColor(getResources().getColor(R.color.colorPrimary));
return true;
}
});
}
@HarshitAgrawal Это список массивов. Я добавляю выбранных студентов в этот массив. а затем передать его следующему действию
Вы возвращаете true, ведь это означает, что после longClick будет вызываться "обычный" щелчок. Вы реализовали onClickListener? И почему вы звоните .getChildAt(), когда у вас уже есть View view в качестве аргумента?
@Gotiasits Нет. Я реализовал только onItemLongClickListener. Помогите мне, где мне реализовать OnClickListener
просто измените ItemLongClickListener на OnClickListener
@HarshitAgrawal Как мне узнать позицию элемента, по которому был выполнен щелчок.
У вас есть аргумент View view, который является элементом, по которому вы щелкнули. При необходимости просто приведите его к правильному типу.
@Gotiasits Я хочу отмечать посещаемость длинным щелчком и открывать сведения о студенте простым щелчком,
@adityakumarsingh в этом случае используйте OnClickListener внутри OnLongClickListener.
Проблема здесь, поскольку вы заявляете, что «некоторые элементы списка выбираются автоматически» означает, что адаптер повторно использует уже выбранное представление для отображения нового элемента, вам необходимо сохранить состояние selected в объекте, который есть у адаптера, и восстановить состояние в getView (также очищает невыделенное состояние представления)
Надеюсь, мой ответ поможет: stackoverflow.com/questions/48664207/…
@MarcosVasconcelos Спасибо за ваш ответ. но я не хотел так долго поддерживать свой класс адаптера. У меня есть еще один вопрос. Как я могу удалить элемент из arraylist после отмены выбора элемента. При первом щелчке я добавляю этот элемент списка в свой arraylist и выделяю его. Я хочу удалить элемент из Arraylist при втором щелчке, когда элемент списка не подсвечен.
Единственный простой способ - оставить поле в объекте для переключения между выбранным состоянием.




как насчет настоящего студента?