Android 包含在回压时擦除的recyclerview数据的TableLayout

Android 包含在回压时擦除的recyclerview数据的TableLayout,android,android-recyclerview,fragment,android-tablayout,Android,Android Recyclerview,Fragment,Android Tablayout,使用活动、表格布局和片段。从包含tabLayout的活动的第一个选项卡中包含RecyclerView移动到显示其中一个reclerView项的数据的片段时。当用户按下“后退”按钮时,recyclerView数据将被擦除。 尝试调试代码时,源代码将不会创建tabLayout或重新蚀刻数据。在backPressed上没有调用任何方法 类文件代码,其中包含表格布局 public class HomeFragment extends Fragment implements TabLayout.OnTab

使用活动、表格布局和片段。从包含tabLayout的活动的第一个选项卡中包含RecyclerView移动到显示其中一个reclerView项的数据的片段时。当用户按下“后退”按钮时,recyclerView数据将被擦除。 尝试调试代码时,源代码将不会创建tabLayout或重新蚀刻数据。在backPressed上没有调用任何方法

类文件代码,其中包含表格布局

public class HomeFragment extends Fragment implements TabLayout.OnTabSelectedListener {

@BindView(R.id.tvRouteName)
TextView tvRouteName;
@BindView(R.id.pager)
ViewPager viewPager;
@BindView(R.id.tabLayout)
TabLayout tabLayout;
private TabPagerAdapter adapter;

public HomeFragment() {
    // Required empty public constructor
}

public static HomeFragment newInstance() {
    HomeFragment fragment = new HomeFragment();
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_home, container, false);
    ButterKnife.bind(this, view);

    //Adding the tabs using addTab() method
    tabLayout.addTab(tabLayout.newTab().setText("All"));
    tabLayout.addTab(tabLayout.newTab().setText("Pending"));
    tabLayout.addTab(tabLayout.newTab().setText("Complete"));
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

    //Creating our pager adapter
    adapter = new TabPagerAdapter(getActivity().getSupportFragmentManager(), tabLayout.getTabCount());

    //Adding adapter to pager
    viewPager.setAdapter(adapter);

    tabLayout.setupWithViewPager(viewPager);

    // set route name to the route
    String routeName = SiconApp.getInstance().getRouteName();
    if (routeName != null && !routeName.isEmpty())
        tvRouteName.setText(routeName);

    return view;
}

@Override
public void onTabSelected(TabLayout.Tab tab) {
    //viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(TabLayout.Tab tab) {
}

@Override
public void onTabReselected(TabLayout.Tab tab) {
}
}
竭尽全力。尝试从onViewCreated、onResume和刷新tabLayout等更改代码

下图显示了recyclerView中的总金额


将此答案视为对上述评论的回复:

数量可以动态更改,金额可以根据数量和金额更改时的总计进行更改。我已经做到了这一点,但每次我一遍又一遍地阅读整个数组时,文本都会发生变化。如果你有更好的方法来完成这个

首先,在
OnTextChange()
中进行计算是不好的。相反,您应该考虑一些
小部件的点击事件

小部件可以是一些
按钮
或键盘的
完成按钮。

以下是一些其他方法:-

  • 尝试打开spinner-pro,如果您提供最大数量,您可以限制数量
  • 点击
    done
    do make calculations,打开带有
    editText
    和done按钮的
    对话框


    [更新1]

    添加我对计算的想法:-

    // Calculate GrandTotal for the very first time
    int grandTotal = 0;
    for (int i = 0; i < mDataSet.size(); i++) {
        // addition of all the sub-totals
    }
    
    // Get an event of quantity change of recyclerview row - using dialogbox or spinner or anything
    // basePrice is price of 1 quantity
    // oldQuantity is before updating new quantity to model
    currowModel = mDataSet.get(position); // Assuming currModel as current dataset item
    grandTotal = grandTotal - (currowModel.getBasePrice() * currModel.getQuantity());
    currowModel.setQuantity(updatedQuantity); // Setting new quanity to model
    grandTotal = grandTotal + (currowModel.getBasePrice() * currModel.getQuantity());
    
    //第一次计算GrandTotal
    int grandTotal=0;
    对于(int i=0;i

快乐编码

User
getChildFragmentManager()
而不是
getActivity().getSupportFragmentManager()
。这是正确的答案。在过去的48小时里我一直在尝试这个,你保存了我的评论:)是的。我在adapter中犯了同样的错误,我试图将其更改为adapter,但无法更改,所以我在这里没有注意到这一点。@向导如果您有空闲时间,我想知道如何在recycler视图中计算总金额,并显示在包含回收器视图的同一活动中。发布我在ContextChangedCustomerInvoiceFragment.grandTotal中实现的代码=0;对于(int i=0;iarrayList
。For loop将首次出现。从grandtotal中仅减去和添加影响行数据。保留模型类中的数量记录。我在模型中记录了所有这些,但问题仍然是grand total包含旧的附加值,我有点困惑如何管理它。