围绕这个话题有相当多的讨论
结果是
InstantiateItem
)进行替换)arraylist/sparsearray
这是我的适配器
private class DatePickerPagerAdapter extends FragmentStatePagerAdapter {
ArrayList<Fragment> registeredFragments = new ArrayList<Fragment>();
public DatePickerPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return CreateWishFormDatePaginationFragment.newInstance(position);
}
@Override
public int getItemPosition(Object object){ //doesnt change much..
return PagerAdapter.POSITION_NONE;
}
@Override
public int getCount() {
return iPageCount;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
registeredFragments.add(position, fragment);
return fragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, registeredFragments.get(position));
}
public void removePage(ViewGroup pager, int position) {
destroyItem(pager, position, null);
registeredFragments.remove(position);
iPageCount--;
pagerIndicator.notifyDataSetChanged();
pagerAdapter.notifyDataSetChanged();
}
public void addPage() {
iPageCount++;
pagerIndicator.notifyDataSetChanged();
pagerAdapter.notifyDataSetChanged();
}
}
谢谢!
如果要从viewpager
中删除项,以下代码没有意义:
@Override
public Fragment getItem(int position) {
return CreateWishFormDatePaginationFragment.newInstance(position);
}
本质上,您根据位置
创建片段
。无论您移除哪个页面,位置
的范围将从[0,iPageCount
)变为[0,iPageCount-1
),这意味着它将始终摆脱最后一个片段
。
你需要的或多或少是以下几点:
public class DatePickerPagerAdapter extends FragmentStatePagerAdapter
{
private ArrayList<Integer> pageIndexes;
public DatePickerPagerAdapter(FragmentManager fm) {
super(fm);
pageIndexes = new ArrayList<>();
for (int i = 0; i < 10; i++) {
pageIndexes.add(new Integer(i));
}
}
@Override
public int getCount() {
return pageIndexes.size();
}
@Override
public Fragment getItem(int position) {
Integer index = pageIndexes.get(position);
return CreateWishFormDatePaginationFragment.newInstance(index.intValue());
}
// This is called when notifyDataSetChanged() is called
@Override
public int getItemPosition(Object object) {
// refresh all fragments when data set changed
return PagerAdapter.POSITION_NONE;
}
// Delete a page at a `position`
public void deletePage(int position)
{
// Remove the corresponding item in the data set
pageIndexes.remove(position);
// Notify the adapter that the data set is changed
notifyDataSetChanged();
}
}
有关从FragmentStatePagerAdapter中删除item的更多详细信息,请参阅此完整示例。
我正在使用“tabs+swipe”项目,我很难删除一个片段。 我正在做的步骤: 从数据库中删除选项卡 从FragmentStatePagerAdapter数据源中删除选项卡 从操作栏中删除选项卡。 使用支持FragmentManager删除片段。 我的remove方法(从片段内调用): 感谢你的帮助!
我遇到的问题是,我需要完全删除中保存的一些。 我已经对它进行了修复,但是旧的片段似乎仍然完好无损。 建筑施工
问题内容: 我有一些JSON输入,其形状我无法预测,并且我必须进行一些转换(以称呼它),以便不记录某些字段。例如,如果我有此JSON: 然后,在转换之后,它应如下所示: 上面的示例是微不足道的,但实际情况并非如此。我将有一些正则表达式,如果 输入JSON 上的任何字段与之匹配,则不应将其放在结果上。如果我有一些嵌套对象,我将必须递归进行。我一直在 LINQ to JSON 上看到过一些东西,但找不
DELETE /feeds/:feed/currency Response Status: 204 No Content
问题内容: 我正在尝试添加/删除表行。 这是我的代码: HTML表格 JavaScript 现在,如您所见,在我的表格中,我有文本字段和按钮。我想要的是: 仅重复行的结构。我现在无法执行此操作,因为innerHTM仅接收文本。如何插入文本框或标签? 文本字段的ID也应该不同,因为稍后我将检索这些值以将其放入数据库中。 我想放置一个函数以增加POI的数量 有人可以帮我吗? 问题答案: 您可以仅克隆具