2012-05-16 19 views
9

tengo este PageAdapter con días de la semana, para cada busca tengo el mismo diseño. Mi problema es cómo actualizar la lista correcta cuando cambia el día. Cuando cambio el día, el Buscapersonas crea un nuevo buscapersonas y elimina el otro, cuando esto sucedió, mi vista de lista apunta a un nuevo buscapersonas pero no a la actual. Por ejemplo, es wedneyday y guardo la referencia de la lista, cuando cambio el martes, el localizador del lunes es crear y el jueves se elimina, y mi punto de referencia para crear la última página (lunes) pero estoy el martes.¿Cómo actualizar el contenido de ViewPager?

Mi PageAdapter:

ListView lvwConfig; 

@Override 
public Object instantiateItem(View pager, int position) { 
    LayoutInflater inflater = (LayoutInflater) mContext 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = inflater.inflate(R.layout.pager_layout, null); 
    lvwConfig = (ListView) v.findViewById(R.id.lvwConfig); 
    ((ViewPager) pager).addView(v, 0); 

    return v; 
} 

Quiero la ListView siempre apuntan a la vista de lista del elemento actual.

+0

http://stackoverflow.com/questions/33012056/view-pager-first-and-second-fragment-data-is-not-updating-when-data-changed-in-a –

Respuesta

39

Leer este post: PagerAdapter

se puede implementar esta función en PagerAdapter:

public int getItemPosition(Object object){ 
    return POSITION_NONE; 
} 

después, se puede utiliza esta función:

yourPagerAdapterObject.notifyDataSetChanged(); 

Este método es malo si tiene demasiadas vistas como para mostrar. Todas las vistas son siempre recalculadas. Pero en tu caso, para algunos puntos de vista, está bien.

+0

Consulte la publicación http : //stackoverflow.com/questions/33012056/view-pager-first-and-second-fragment-data-is-not-updating-when-data-changed-in-a –

5

Reemplazar getItemPosition en PagerAdapter es más fácil, pero un poco más ineficiente. De esta forma, cuando llame al notifyDataSetChanged(), el buscapersonas eliminará todas las vistas y las volverá a cargar todas. Como tal, se obtiene el efecto de recarga. Hubo otra opción que suggested by alvarolb, es el método setTag() en instantiateItem() al crear una nueva vista. Luego, en lugar de usar notifyDataSetChanged(), puede usar findViewWithTag() para encontrar la vista que desea actualizar.

Cuestiones relacionadas