gpt4 book ai didi

android - 无法实现 notifyDataSetChanged()

转载 作者:行者123 更新时间:2023-11-30 02:54:50 28 4
gpt4 key购买 nike

我正在使用 FragmentStatePagerAdapter 来实现 VerticalPageAdapter 的目的,我必须为与 Button< 相关的相同 Fragment 创建动态编号 被按下,所以,我只检索 getItem() 方法中指定的 fragment :

public Fragment getItem(int i) {            
return new Center_ver();
}

并且 getCount() 返回一个关于其他 fragment 中按下的 Button 的动态数字:

@Override
public int getCount() {
return num_of_gangs;
}

但这给了我 IlligalStateException 因为我没有被称为 notifyDataSetChanged(),所以,我将通知添加到我用来增加数字的方法中 fragment 数:

public void add_gang() {    
num_of_gangs ++;
notifyDataSetChanged();
}

但我也得到了 IlligalStateException :

05-04 13:43:43.210: E/AndroidRuntime(1625): FATAL EXCEPTION: main
05-04 13:43:43.210: E/AndroidRuntime(1625): java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 1, found: 5 Pager id: com.automation.isolace:id/lighting_vertical_pager Pager class: class com.automation.standards.VerticalViewPager Problematic adapter: class com.automation.pageadapters.LightVerticalPageAdapter

因此,我决定在返回值之前将其添加到 getCount() 方法中,如下所示:

@Override
public int getCount() {
notifyDataSetChanged();
return num_of_gangs ;
}

但这给了我一个StackOverflowError:

05-04 13:46:36.326: E/AndroidRuntime(1690): FATAL EXCEPTION: main
05-04 13:46:36.326: E/AndroidRuntime(1690): java.lang.StackOverflowError
05-04 13:46:36.326: E/AndroidRuntime(1690): at com.automation.standards.VerticalViewPager$PagerObserver.onChanged(VerticalViewPager.java:2717)
05-04 13:46:36.326: E/AndroidRuntime(1690): at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
05-04 13:46:36.326: E/AndroidRuntime(1690): at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)

最佳答案

您不应该将 notifyDataSetChanged() 放在 getCount() 中。 notifyDataSetChanged() 调用 getCount(),这最终导致一个调用另一个的无限循环,称为 StackOverflow 错误。当您将数据添加到可能的结果列表时,您应该调用它。例如,如果您要添加一个可能存储在 ArrayList 中的新 fragment ,您可以这样做:

public void add_gang(Fragment frag) {
fragmentList.add(frag);
notifyDataSetChanged();
}

关于android - 无法实现 notifyDataSetChanged(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23457029/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com