2017-02-01 14 views
0

アクティビティ、tabLayout、およびフラグメントを操作します。 tabLayoutを含むアクティビティから移動すると、最初のタブのRecyclerViewにreclerViewアイテムの1つのデータを表示するフラグメントが含まれます。ユーザーが戻るボタンを押すと、recyclerViewデータが消去されます。 コードをデバッグしようとすると、ソースはtabLayoutを作成せず、データを再取得しません。 backPressedではメソッドが呼び出されません。 tabLayoutsbackLayoutで消去されたrecyclerviewデータを含むTabLayout

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からのコードを変更し、recyclerViewの金額の合計を見つけるために以下に提供tabLayoutなど

画像をリフレッシュしようとしたことは

CheckImage

+1

getActivity()。getSupportFragmentManager()ではなく、ユーザーの 'getChildFragmentManager()'です。 – Wizard

+0

これは正解です。私は最後の48時間からこれを試していた、あなたは私を救った –

+0

コメントは十分です:) – Wizard

答えて

1

上記のこのコメントの返信として、この答えを考えてみましょう:

量は動的に変更することができ、量は量に基づいて変更され、量はGrandTotalに基づいて変更されます。私はこれを達成しましたが、テキスト全体を何度も何度も読んでいます。これを完了するためのよりよいアプローチがあれば。

最初にまず、その計算が悪い計算でOnTextChange()。代わりに、widgetのクリックイベントがあると考えるべきです。
ウィジェットは、buttonまたはキーボードのdoneボタンになります。ここで

は、他のいくつかのアプローチです: -

  • は、スピナーを開こう - プロがあなたが
  • 開きeditTextdialogを最大量を提供している場合は、数量を制限することができています完了ボタンをクリックして、doneを計算します。

    計算についての私の考えを追加[UPDATE 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()); 
    

+0

onTextChangedで実装したコードを投稿する –

+0

CustomerInvoiceFragment.grandTotal = 0; for(int i = 0; i

+0

上記のコードが私のeditTextに何らかの値を入力するたびに実行されます。コーディングの面からは、このarrayListが複数回読み込まれているため、これは良いアプローチではないと思います。 –

関連する問題