我目前有3個片段(選項卡),並且當前正在使用viewpager。我有一個listview爲每個片段,並且我想通知另一個單擊視圖後發生的事情。我嘗試在mainactivity上的setOnPageChangeListener()上使用notifyDataSetChanged()。問題是,當我更改標籤頁時,我可以看到插入的數據。由於更改標籤後發生更改。來自不同片段的notifyDataSetChanged()
回答
您可以考慮使用廣播接收器來通知數據集更改。
在您的接收片段
public static final string RADIO_DATASET_CHANGED = "com.yourapp.app.RADIO_DATASET_CHANGED";
private Radio radio;
在onCreate方法:
radio = new Radio();
接收片段內的無線電類:
private class Radio extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(RADIO_DATASET_CHANGED)){
//Notify dataset changed here
}
}
在上恢復該接收片段方法:
@Override
protected void onResume() {
super.onResume();
//using intent filter just in case you would like to listen for more transmissions
IntentFilter filter = new IntentFilter();
filter.addAction(RADIO_DATASET_CHANGED);
getActivity().getApplicationContext().registerReceiver(radio, filter);
}
確保我們註銷接收器的的onDestroy方法
@Override
protected void onDestroy() {
super.onDestroy();
try {
getActivity().getApplicationContext().unregisterReceiver(radio);
}catch (Exception e){
//Cannot unregister receiver
}
}
片段傳輸的數據集改變
然後從片段被通知datasetchange只是做:
Intent intent = new Intent(ReceivingFragment.RADIO_DATASET_CHANGED);
getActivity().getApplicationContext().sendBroadcast(intent);
好吧,它正在努力! :D如果你能看見我,我現在正在瘋狂。非常感謝。 :D我剛剛注意到notifydatasetchanged()一直在導致我的標籤刷卡變慢。當我嘗試使用notifydatasetchaned時,它不起作用,而是我再次打電話給我的列表。有效。比以前更平滑。 :) –
很高興爲您服務! –
只是好奇嗎? unregisteredReceiver()如何工作?我似乎無法稱之爲? –
在你的MainActivity中,試試這段代碼。它可能有幫助。
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
if (position ==0)
viewPager.getAdapter().notifyDataSetChanged();
if (position == 1)
viewPager.getAdapter().notifyDataSetChanged();
if (position == 2)
viewPager.getAdapter().notifyDataSetChanged();
}
我認爲這是@Renz現在正在做的 – maciekjanusz
這就是我把它放在哪裏。在setonpagechangelistener的onpages選中。 –
- 1. 來自MainActivity的片段ListView適配器notifyDataSetChanged()
- 2. 只掃描來自片段的圖像不完整片段
- 3. 來自Python的HTML片段
- 4. 傾聽來自不同的Android碎片
- 5. Android:AlertDialog在片段中看起來不同
- 6. 獲取來自父代的片段中不同字段的值活動
- 7. 在以下html代碼片段中添加來自不同網站的圖片
- 8. RecyclerView裏面viewpager裏面的片段notifydatasetchanged不工作
- 9. Android調用來自AsyncTask的notifyDataSetChanged
- 10. 顯示來自片段對話框的片段
- 11. Android:來自同一個XML文件的多個片段
- 12. 來自EditText(來自GridView)的片段中的用戶輸入不是持久的
- 13. 來自片段的調用活動
- 14. Android設置來自片段的報警
- 15. Django - 重複使用來自多個不同模板的HTML片段
- 16. 清除ArrayList並在片段的適配器ListView中執行notifyDataSetChanged
- 17. 片段幻燈片轉換不同步
- 18. 不能在不同的片段類
- 19. invalidateOptionsMenu犯規獲得來自片段
- 20. 來自列表視圖的數據不能傳遞到片段
- 21. 在viewPager的片段中,recyclerView適配器notifyDataSetChanged不能在第一時間工作
- 22. 來自不同大小的網址的Android圖片
- 23. 來自不同URL的不同登錄
- 24. 片段回來按,加載回片段
- 25. 在其他列表片段/選項卡上調用notifyDataSetChanged()
- 26. [完成] notifyDataSetChanged()不會自動更新ListActivity
- 27. 自定義適配器notifyDataSetChanged不工作
- 28. 同步獲取圖片(來自Uri)
- 29. 獲取來自不同模型的精選圖片
- 30. 隱藏BottomNavigationView從不同的片段
由於您正在使用視圖尋呼機,因此它有一個選擇選項需要在當前片段的兩側加載多少片段,比如說1.So 1片段將被加載到當前片段的任一側,因此如果您試圖引用除這些片段之外的任何片段,那麼可能性不會是什麼發生或者它會崩潰,並告訴你沒有這樣的視圖或適配器存在,這不是一個答案,而是當你得到它時要注意的東西,我也需要同樣的東西。 –
感謝您的注意。看到數據在更改制表符之後會變得非常煩人。 XD –