Cómo actualizar la vista actual en ViewPager

Estoy utilizando ViewPager con vistas V1, V2, V3 ….. Estoy intentando fijar la visibilidad de un LinearLayout usado en cada visión, chascando en un botón. A través de este código se aplica el cambio en la vista siguiente en lugar de la vista actual. Por ejemplo, estoy en V5. Cuando hago clic en ocultar / mostrar el objeto en V6. Si estoy retrocediendo de V6 a V5, entonces aplica el cambio en V4.

Aquí está el código:

 public class FragmentStatePagerSupport extends FragmentActivity { static final int NUM_ITEMS = 10; MyAdapter mAdapter; ViewPager mPager; static int mNum; private Button btn_zoom; static LinearLayout LL_Head; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_pager); mAdapter = new MyAdapter(getSupportFragmentManager()); mPager = (ViewPager)findViewById(R.id.pager); mPager.setAdapter(mAdapter); mPager.setCurrentItem(5); btn_zoom = (Button)findViewById(R.id.btn_zoom); btn_zoom.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { if (LL_Head.getVisibility() == View.VISIBLE) { LL_Head.setVisibility(View.GONE); }else{ LL_Head.setVisibility(View.VISIBLE); } } }); . . . } public static class MyAdapter extends FragmentStatePagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return NUM_ITEMS; } @Override public Fragment getItem(int position) { return ArrayListFragment.newInstance(position); } } public static class ArrayListFragment extends ListFragment { static ArrayListFragment newInstance(int num) { ArrayListFragment f = new ArrayListFragment(); Bundle args = new Bundle(); args.putInt("num", num); f.setArguments(args); return f; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mNum = getArguments() != null ? getArguments().getInt("num") : 1; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.sura_vpager, container, false); TextView tv1=(TextView) v.findViewById(R.id.txtHead); tv1.setText("Fragment #" + mNum); LL_Head = (LinearLayout)v.findViewById(R.id.LL_Head); return v; } 

Por favor asesóreme, gracias

Con el fin de hacer una experiencia fluida ViewPager no sólo carga la vista que está mirando actualmente, sino también las vistas adyacentes. Esto significa que si usted está desplazándose de la posición 0 a la posición 1, lo que realmente sucede es que la posición 2 está cargada, por lo que estará listo cuando se desplace. Esta es la razón por la que el cambio se aplica a la vista "siguiente", en lugar de la actual (si se desplaza de la vista 2 a 1, se crea la vista 0).

Dado que está configurando el LinearLayout estático en OnCreate, entonces sólo se creará la última vista que se cambie, y ésta sólo será la que esté buscando, si se ha desplazado hasta el final del buscapersonas. En su lugar, debe realizar un seguimiento del fragmento que el usuario está viendo (ViewPager.setOnPageChangeListener ()) y almacenar en caché el fragmento en su adaptador. A continuación, usted sabe qué posición de fragmento que desea, y cuando lo pide, sólo va a volver el que creó anteriormente (no crear uno nuevo, entonces no funcionará :)).

O, la versión del tl; dr: LL_Head casi siempre se fija para ser el fragmento siguiente, no el actual. No lo fije estáticamente. Cachéelo en su PagerAdapter y regítelo cuando lo necesite.

Edit: Alternativamente, es posible que desee que los fragmentos escuchen un evento de tipo, que les dice si deben mostrar u ocultar el diseño en cuestión. De lo contrario sólo será el fragmento actual el que se ve afectado por esto, en lugar de todos los fragmentos.

La numeración en Java comienza a partir de 0. Así, cuando se desea establecer el quinto elemento, hay que llamar a mPager.setCurrentItem (4);

¡Espero que esto ayude!

  • Actualizar la actividad de la fuente antes de la transición de salida
  • 3 fragmentos androides en viewpager, cómo mantenerlos todos vivos?
  • ViewPager analógico para paginación a horizontales y verticales
  • Eclipse no reconocerá el proyecto como biblioteca (ActionBarSherlock / ViewPagerIndicator)
  • ViewPager con FragmentPagerAdapter no se muestra
  • Android ViewPager: descargar las imágenes de la URL
  • Cómo reemplazar un ViewPager con un fragmento
  • Pager centrado de la visión con la previsualización siguiente y anterior y pagetransformer
  • Cómo conservar el estado de ViewPager dentro de un RecyclerView?
  • Outofmemeoryerror (viewpager + visiones de imagen)
  • Desplazamiento de imágenes (no de diseños) con viewpager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.