package com.orgzly.android.ui.util; import android.util.SparseBooleanArray; import android.view.View; import android.widget.ListView; import java.util.TreeSet; public class ListViewUtils { public static boolean isIdVisible(ListView listView, long id) { final int firstListItemPosition = listView.getFirstVisiblePosition(); final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1; for (int pos = firstListItemPosition; pos <= lastListItemPosition; pos++) { long posId = listView.getItemIdAtPosition(pos); if (posId == id) { return true; } } return false; } public static View getViewByPosition(ListView listView, int pos) { final int firstListItemPosition = listView.getFirstVisiblePosition(); final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1; if (pos < firstListItemPosition || pos > lastListItemPosition) { return listView.getAdapter().getView(pos, null, listView); } else { final int childIndex = pos - firstListItemPosition; return listView.getChildAt(childIndex); } } public static TreeSet<Long> getCheckedIds(ListView listView) { TreeSet<Long> ids = new TreeSet<>(); SparseBooleanArray checked = listView.getCheckedItemPositions(); for (int i = 0; i < checked.size(); i++) { if (checked.valueAt(i)) { long id = listView.getItemIdAtPosition(checked.keyAt(i)); ids.add(id); } } return ids; } }