android - example - ¿Cómo obtener los elementos que se muestran actualmente en AdapterView?
recyclerview adapter android example (2)
Como en el título: me gustaría saber cómo obtener una lista (matriz) de todos los elementos que se muestran actualmente en mi AdapterView.
¿Por qué? Los objetos que se muestran en mi AdapterView requieren que se libere un oyente después de que el usuario cierre AdapterView. Necesito hacerlo para optimizar mi aplicación.
¿O hay algún método (que yo pudiera anular) que se ejecuta en la destrucción de las vistas?
Como pequeña pista:
Si desea obtener todos los elementos que son completamente visibles (-> espere aquellos, que están en la parte inferior o superior y están casi fuera de la pantalla), debería ver esta publicación:
Ver solo los elementos de ListView visibles
implementa OnScrollListener
public class NewsCategoryDC extends Activity implements OnScrollListener {
y establece OnScrollListener en listView
listView.setOnScrollListener(NewsCategoryDC.this);
y puedes obtener las primeras y últimas filas visibles
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
firstVisibleRow = listView.getFirstVisiblePosition();
lastVisibleRow = listView.getLastVisiblePosition();
/*Now you get the first and last visible rows, and you easily get the rows from first to last visible row and allocate resources to visible rows or deallocate resources to rows except visible rows..,.*/
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}
PRUEBA ESTO..,.
y si hay alguna otra forma mejor de hacerlo, por favor, esta es una pregunta muy útil y útil ...,.
Gracias..,.
EDITAR............................
agregar código en el método onScroll ()
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
int firstVisibleRow = listView.getFirstVisiblePosition();
int lastVisibleRow = listView.getLastVisiblePosition();
for(int i=firstVisibleRow;i<=lastVisibleRow;i++)
{
//Write your code here(allocation/deallocation/store in array etc.)
System.out.println(i + "=" + listView.getItemAtPosition(i));
}
}