Существует также способ получить элемент за пределами onItemClick
:
int index = tv.getListSelection();
if (index != ListView.INVALID_POSITION) {
Object item = tv.getAdapter().getItem(index);
}
, остерегайтесь того, что int getListSelection()
может вернуть ListView.INVALID_POSITION
, если нет раскрывающегося списка или если нет выбора.
После выполнения алгоритма кратчайшего пути для всех пар и определения вершин с помощью еды это становится задачей коммивояжера . Вы не можете решить его эффективно, но вы можете построить сколь угодно хорошие приближения к решению за полиномиальное время. Вы, вероятно, захотите использовать приближение, если не сможете все предварительно вычислить. Если вы можете выполнить предварительные вычисления (или иным образом гарантировать, что у вас будет достаточно времени, чтобы найти точное решение), то, получив кратчайшие пути всех пар, вы можете просто найти минимальную общую длину пути по всем возможным изменения порядка, в котором вы едите кусочки пищи. Этот метод грубой силы, вероятно, можно несколько улучшить, если следить за тем, когда кратчайший путь между двумя кусочками пищи пересекает другой кусок пищи.