2017-01-18 2 views
0

Я хочу получать новый список каждый раз и обновлять представление, когда viewpager в определенном положении. Я попытался сделать это ниже, но он больше отставал. Я обновляю свой список на первой странице, и я получаю эти обновления результаты в 3 page.so мне нужно, чтобы получить новые результаты каждый раз на этой странице 3 и обновить viewpager.Any sugg пожалуйстаОбновить элементы Viewpager в частности Страница

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 

     @Override 
     public void onPageSelected(int position) { 
      check=position; 
      if(position==3) { 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         recentList=new ArrayList<PlayerModel>(); 
         mySQLiteAdapter = new SQLiteAdapter(MultHomePageActivity.this); 
         mySQLiteAdapter.openToWrite(); 
         Cursor mFavoritesCursor = mySQLiteAdapter.fetchRecentData(AppConstants.AUDIO_TABLE); 
         LogUtil.error("Count",mFavoritesCursor.getCount()+"-->"); 
         if(mFavoritesCursor!=null) 
          recentList= getAudioFavRecentsList(mFavoritesCursor); 
         mySQLiteAdapter.close(); 
         adapter.notifyDataSetChanged();      } 
       }); 



      } 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 

Я попытался поместить свой код в отдельном потоке, как this.still он отставал

private class AsyncTaskRunner extends AsyncTask<String, String, String> { 

    private String resp; 

    @Override 
    protected String doInBackground(String... params) { 
     recentList=new ArrayList<PlayerModel>(); 
     mySQLiteAdapter = new SQLiteAdapter(MultHomePageActivity.this); 
     mySQLiteAdapter.openToWrite(); 
     Cursor mFavoritesCursor = mySQLiteAdapter.fetchRecentData(AppConstants.AUDIO_TABLE); 
     LogUtil.error("Recent Count",mFavoritesCursor.getCount()+"-->"); 
     if(mFavoritesCursor!=null) 
      recentList= getAudioFavRecentsList(mFavoritesCursor); 
     mySQLiteAdapter.close(); 
     adapter.setFragment(fragmentMultCards.newInstance(recentList,AppConstants. 
       AUDIO_PLAYER,AppConstants.RECENT_PLAYER),3,getString(R.string.msg_recents)); 

     return resp; 
    } 


    @Override 
    protected void onPostExecute(String result) { 
     adapter.notifyDataSetChanged(); 
    } 


    @Override 
    protected void onPreExecute() { 
    } 


    @Override 
    protected void onProgressUpdate(String... text) { 
    } 
} 

    private List<PlayerModel> getAudioFavRecentsList(Cursor mAudioCursor) { 
    List<PlayerModel> cursorList=new ArrayList<>(); 
    if (mAudioCursor != null) { 
     if(mAudioCursor.getCount()>0) 
      do{ 

       cursorList.add(new PlayerModel(
         mAudioCursor.getInt(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_ID)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_DISPLAY_NAME)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_SIZE)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_DATE_TAKEN)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_DURATION)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_ALBUM)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_ALBUM_ID)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_ARTIST)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_COMPOSER)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_DATA)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_TRACK)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_MIME)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_IS_ALARAM)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_BOOKMARK)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_TITLE)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_IS_NOTIFICATION)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_IS_MUSIC)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_RECENT_DATE)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_FAVORITE)), 
         mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(AppConstants.KEY_AUDIO)) 

       )); 

      }while (mAudioCursor.moveToNext()); 
    } 
    return cursorList; 
} 

ответ

0

Я думаю, что вам нужно получить ваши данные в отдельном потоке и один раз y ou получит данные, тогда вы его обновите. Пока вы извлекаете данные в главной теме, поэтому ее отставание. Надеюсь, это сработает для вас :)

+0

Можете ли вы объяснить это примером PLS –

+0

Я обновил свой qn pls, проверив его. Я попробовал AsyncTask, но моя страница была отстающей. –

+0

Можете ли вы поделиться кодом метода getAudioFavRecentsList? –

Смежные вопросы