0

Я имею в MainActivityview pager, это view pager содержит две вкладки RecentFeed и SavedFeed и использует тот же FeedFragment как и имеет тот же макетКак обновить содержимое пейджера представления после его инициализации?

Теперь я хочу, чтобы обновить содержимое этих фрагментов, когда новый gcm message является ПОЛУЧАЛ или происходит изменение в моей базе данных

здесь что сделали до сих пор:

Я создал интерфейс changelistening следующим образом-

public interface OnDatabaseChangeListener { 

void onChange(); 
} 

Затем использовал это в helper классе сообщать об изменениях в следующем

private OnDatabaseChangeListener databaseChangeListener; 
public void setDatabaseChangeListener(OnDatabaseChangeListener databaseChangeListener){ 
    this.databaseChangeListener = databaseChangeListener; 
} 


public void addNewAlertToDB(Alert alert) { 
     . 
     .  
    databaseChangeListener.onChange(); 
    Log.d(TAG, "Added new alert " + title); 
} 

затем Внутри моей GCMListenerService я это

  DatabaseHelper.getInstance(this).addNewAlertToDB(alert); 
      DatabaseHelper.getInstance(this) 
        .setDatabaseChangeListener(new OnDatabaseChangeListener() { 
       @Override 
       public void onChange() { 
         //what should I do here to update viewpager content in MAinActivity 
       } 
      }); 

Точно так же в вкладке Мой RecentFeed я нажимаю фид, чтобы сохранить ... так, что он перемещен на SavedFeed tab ...

void onSaveClicked(View view, int pos) { 
    DatabaseHelper.getInstance(context) 
      .saveAlert(alerts.get(pos)); 
    DatabaseHelper.getInstance(context) 
      .setDatabaseChangeListener(new OnDatabaseChangeListener() { 
       @Override 
       public void onChange() { 
        //what should I do here to update viewpager content in MAinActivity 
       } 
      }); 
    removeItem(pos); 
    addItem(0); 
    Snackbar.make(view, "Item Saved", Snackbar.LENGTH_LONG) 
      .setAction("UNDO", null).show(); 
    view.setEnabled(false); 
} 

Но, к моему удивлению, SavedFeed по-прежнему пуст .... Теперь, если я закрою приложение и перезапустил ... вкладка savedfeed имеет контент. Итак, я понял, что содержимое сохраняется, но не обновляется на адаптере сохраненного фида viewpager.

Так что я хочу знать, как обновить содержимое мгновенно в RecentFeed когда он recieves ГКМ-сообщение и как обновить savefeed, когда подача спасается от recentfeed.

+0

напишите свой полный код, чтобы я мог вам помочь. – TheGreat004

ответ

1

Убедитесь, что вы делаете следующий адаптер вашего фида управления ListView:

adapter.notifydatasetchanged() 

Что касается ViewPager вы можете сделать это только в том случае (хотя по умолчанию 1 или 2):

viewpager.setOffscreenpagelimit 

Кроме того, убедитесь, что эти функции выполнены в потоке пользовательского интерфейса.

+0

Это помогло сохранить содержимое сохраненного фида .... но как справиться с новым сообщением gcm для последних фидов –

+0

нет setOffscreenpagelimit не помогло, потому что у меня есть только две страницы –

+0

В вашем приемнике вещания вам необходимо иметь слушателей, которые подпишут, а затем вызовут слушателей на messageReceive ... Не забудьте сделать это в потоке пользовательского интерфейса, это очень важно. И на странице щелкнули или переключили, все еще делаете adapter.notifydatasetchanged() –

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