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) { } } } 

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.

  • Acceso a TextView en ViewPager desde la actividad
  • Android PagerAdapter, obtener la posición actual
  • El fragmento secundario en el fragmento de visualizador de la vista desaparece después del intercambio
  • Viewpager: Si la página se quita el contenido de las páginas siguientes obtiene el contenido de las páginas eliminadas
  • Android: Desplazamiento de problemas con recyclerview dentro de un viewpager
  • Edittext obtiene automáticamente el foco cuando se mueve entre páginas en un paginador de vista
  • Android - vista de la imagen dentro de los problemas del paginador de vista
  • Cómo poner ViewPager verticalmente swiped en un ViewPager horizontalmente barrido
  • AdMob AdView y ViewPager?
  • Android Tablayout Establecer textAllCaps a False no funciona
  • PagerSlidingTabStrip: Alineación de las pestañas de ViewPager a la derecha
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.