Mantener la vista de lista y el buscador de vistas sincronizados

Perdóname si el título es un poco vago, estoy teniendo problemas para redactar este problema, que es también por qué no puedo encontrar ningún ejemplo a través de Google.

Estoy usando el maestro / diseño de flujo de detalle en mi aplicación, ya que en su mayoría se desarrollan en una tableta. Flujo maestro / detallado:

La implementación sigue el patrón habitual, dos Fragmentos que están contenidos en una Actividad y la tengo funcionando perfectamente. En este caso, el detalle es en realidad un ViewPager , con ViewPager y ListView siendo formas alternativas de mostrar los mismos datos.

Por lo tanto, la selección de un elemento de la lista desplazará el ViewPager a la posición y el deslizamiento a través de actualizará el elemento seleccionado en la lista.

Esto es lo que tengo hasta ahora:

MainActivity.java

  public class MainActivity extends ActionBarActivity implements VideoListFragment.Callbacks, VideoDetailFragment.Callbacks { @Override public void onItemSelected(String callingClass, int id) { //Work out which one we're updating based on which class called this method if (callingClass == VideoListFragment.VIDEO_LIST_ID) { //Update the VideoDetail VideoDetailFragment fragment = (VideoDetailFragment) getSupportFragmentManager().findFragmentById(R.id.content_pane); if (fragment != null) { fragment.setViewPagerPosition(id); } else { Bundle arguments = new Bundle(); arguments.putInt(VideoDetailFragment.VIDEO_ID, id); fragment = new VideoDetailFragment(); fragment.setArguments(arguments); getSupportFragmentManager().beginTransaction() .replace(R.id.content_pane, fragment) .commit(); } } else if (callingClass == VideoDetailFragment.VIDEO_DETAIL_ID) { //Update the VideoList VideoListFragment fragment = (VideoListFragment) getSupportFragmentManager().findFragmentById(R.id.list_pane); fragment.setSelection(id); } } } 

ListFragment.java

 public class ListFragment extends ListFragment { public interface Callbacks { public void onItemSelected(String callingClass, int id); } @Override public void onListItemClick(ListView listView, View view, int position, long id) { super.onListItemClick(listView, view, position, id); setSelection(position); mCallbacks.onItemSelected(VIDEO_LIST_ID, position); } @Override public void setSelection(int position) { mListView.setItemChecked(position, true); mListView.smoothScrollToPosition(position); } } 

VideoDetailFragment.java

  public class VideoDetailFragment extends Fragment { public interface Callbacks { public void onItemSelected(String callingClass, int id); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //Left if (mListPosition > position + positionOffset) { mCallbacks.onItemSelected(VIDEO_DETAIL_ID, position); } else //Right { mCallbacks.onItemSelected(VIDEO_DETAIL_ID, position); } } } 

Es un sistema bastante básico, pero funciona en su mayor parte, el único problema es que el sistema a menudo llama a onPageScrolled cuando se están actualizando las vistas, como cuando se descargan nuevos datos y se llama a notifyDatasetChanged . Esto conduce a un montón de ida y vuelta con la selección listview vuelo hacia arriba y hacia abajo y se ve pegajosa en general.

Un buen ejemplo de lo que quiero es la aplicación de GMail, que tiene el flujo de detalle maestro y actualizaciones sin problemas. ¿Hay ejemplos de código de esto en cualquier parte?

Gracias por adelantado.

  • Animar las dimensiones superior e inferior de una vista
  • Barra lateral de Android como facebook o firefox
  • Forzar el reajuste en un grupo de vista incluyendo todos sus hijos
  • Crash al devolver el fragmento como una pestaña. Ver con la misma ID
  • Uso de surfaceView para capturar un video
  • IBM Worklight - ¿Cómo habilito la depuración de WebView en Android?
  • Botón con fondo transparente oscurece en Lolipop android
  • Cómo deshabilitar el desplazamiento de HorizontalScrollView dentro de ViewPager
  • Desempeño de Android: Adición de vista mediante programación vs configuración de vista a GONE / VISIBLE
  • ¿Cuándo sabemos cuándo se han establecido las opiniones de una actividad
  • Cómo alinear el botón por centro y hacer offset
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.