ActionBar y ViewPager y CursorLoader funciona, pero tal vez hay mejor manera

Mi aplicación carga datos de la base de datos (ContentResolver) y crea pestañas en ActionBar con ViewPager. El código siguiente funciona como se esperaba, pero quiero que alguien revise mi código. Necesito saber si cumple con los patrones generales y las prácticas? ¿Necesita un cambio? ¿Puedo obtener algunas opiniones?

public class MainActivity extends SherlockFragmentActivity { private static final String TAG = MainActivity.class.getSimpleName(); TabAdapter tabAdapter; ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tabAdapter = new TabAdapter(getSupportFragmentManager()); viewPager = (ViewPager) findViewById(R.id.viewpager); viewPager.setAdapter(tabAdapter); final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); } }); } private class TabAdapter extends FragmentPagerAdapter implements ActionBar.TabListener, LoaderManager.LoaderCallbacks<Cursor> { ArrayList<String> lists = new ArrayList<String>(); ArrayList<Fragment> fragments = new ArrayList<Fragment>(); public TabAdapter(FragmentManager fragmentManager) { super(fragmentManager); getSupportLoaderManager().initLoader(0, null, this); } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { viewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } @Override public Fragment getItem(int arg0) { return fragments.get(arg0); } @Override public int getCount() { return fragments.size(); } @Override public CharSequence getPageTitle(int position) { return lists.get(position); } @Override public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) { CursorLoader cursorLoader = new CursorLoader( MainActivity.this, TasksContentProvider.TaskLists.CONTENT_URI, null, null, null, null); return cursorLoader; } @Override public void onLoadFinished(Loader<Cursor> arg0, Cursor c) { while (c.moveToNext()) { String title = c.getString(c.getColumnIndex(TasksContentProvider.TaskLists.Columns.TITLE)); lists.add(title); TaskListFragment fragment = new TaskListFragment(); Bundle bundle = new Bundle(); bundle.putInt("LIST_ID", c.getInt(c.getColumnIndex(TasksContentProvider.TaskLists.Columns._ID))); fragment.setArguments(bundle); fragments.add(fragment); final ActionBar actionBar = getSupportActionBar(); actionBar.removeAllTabs(); for (int i = 0; i < getCount(); i++) { actionBar.addTab(actionBar.newTab().setText(getPageTitle(i)).setTabListener(this)); } } } @Override public void onLoaderReset(Loader<Cursor> arg0) { } } } 

2 Solutions collect form web for “ActionBar y ViewPager y CursorLoader funciona, pero tal vez hay mejor manera”

Eso depende completamente de su diseño. Si está dispuesto a usar SherlockActionBar entonces es probable que dependa de diseño / código de alguien más. Sin embargo, usted puede encontrar muchos exmaples y tutoriales de cómo hacer uso de SherlockActionbar. Sin embargo, encontrará que hay muchos nuevos módulos que se pueden utilizar para crear funcionalidad similar a la de ActionbarSherlock. Echa un vistazo al siguiente enlace para encontrar nuevas características en las bibliotecas v4 y v7,

http://developer.android.com/tools/support-library/index.html

Pocas sugerencias sobre la estructuración de código. Trate de modularizar su código, aunque a partir de ahora es legible. Espero que esto ayude.

Estoy utilizando mFragmentStatePageAdapter.notifyDataSetChanged() ; en onLoadFinished(Loader<Cursor> loader, Cursor data) para notificar los cambios de datos, y si mueve la parte del cargador del cursor a MainActivity , también funciona. personalmente prefiero no implementar el cargador del cursor en el adaptador.

  • android: ¿Actualizar los elementos de ActionBar dependiendo de cada Fragmento en un ViewPager?
  • ¿Cómo puedo usar View pager con touchimageview?
  • Deslizar entre las actividades de Android como con ViewPager
  • Implementación de desplazamiento circular en PagerAdapter
  • Detectar el cambio de la pestaña ViewPager dentro del fragmento
  • Actualización dinámica de TabLayout sin cambiar la ficha seleccionada
  • ViewPager dentro del fragmento
  • ¿Es posible acceder al Fragmento actual que está siendo visualizado por un ViewPager?
  • Programaticamente Ocultar Soft Keyboard en ViewPager.OnPageChangeListener onPageSelected ()?
  • VideoView en Viewpager, detener el vídeo al cambiar de página
  • Fragmentos anidados - comunicación entre fragmentos secundarios en un fragmento padre en un viewpager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.