I'm using only one fragment for my all tabs.
But I couldn't pass selected tab name to my fragment, so based on that I can load my order details data. I have a TextView in fragment, I need to change its text to tab name whenever I click on any tab.
My code is as below.
In DateAdapter(PageViewer Adapter)
public class DateAdapter extends FragmentStatePagerAdapter {
private Context context;
int tabCount;
Integer Index;
public DateAdapter(FragmentManager fm) {
super(fm);
}
public DateAdapter(FragmentManager fm, Context context, int tabCount) {
super(fm);
this.context = context;
this.tabCount = tabCount;
}
@Override
public Fragment getItem(int i) {
OrderListFragment oneFragment = new OrderListFragment();
SalesOrderListActivity salesOrderListActivity=new SalesOrderListActivity();
return oneFragment.newInstance("Tabname", "");
}
@Override
public int getCount() {
return tabCount;
}
@Override
public CharSequence getPageTitle(int position) {
return "Page " + position;
}
}
In OrderListFragment (Common Fragment)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view= inflater.inflate(R.layout.fragment_order_list, container, false);
title=(TextView)view.findViewById(R.id.tabtitle);
salesorderrecycle = (RecyclerView) view.findViewById(R.id.salesorderrecycle);
salesorderrecycle.setHasFixedSize(true);
salesorderrecycle.setLayoutManager(new LinearLayoutManager(getActivity()));
ApiInterface apiInterface = APIClient.getClient().create(ApiInterface.class);
Call<ArrayList<SalesOrder>> call = apiInterface.GetordersList( loginModel.getUserId());
call.enqueue(new Callback<ArrayList<SalesOrder>>() {
@Override
public void onResponse(Call<ArrayList<SalesOrder>> call, Response<ArrayList<SalesOrder>> response) {
adapter = new SalesOrderAdapter(getActivity(), response.body());
adapter.Datefilter("04/09/2019");//Need to give here Tab title value
salesorderrecycle.setAdapter(adapter);
((SalesOrderListActivity)getActivity()).SetCountText(adapter.getItemCount());
((SalesOrderListActivity)getActivity()).SetAmountText(adapter.getTotalAmount());
}
@Override
public void onFailure(Call<ArrayList<SalesOrder>> call, Throwable t) {
Toast.makeText(getActivity(),"Connection Failure",Toast.LENGTH_LONG).show();
}
});
return view;
}
In SalesOrderActivity (Main Activity)
public class SalesOrderListActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener {
TextView toolbarText,orderamount,ordercount;
ImageView back_img;
public Integer OrderCount;
public SalesOrderAdapter listadapter;
TabLayout tablayout;
ViewPager viewpager;
public String TabName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sales_order_list);
toolbarText=findViewById(R.id.toolbarText);
toolbarText.setText("Sale Orders");
back_img=findViewById(R.id.back_img);
tablayout=(TabLayout)findViewById(R.id.tablayout);
viewpager=(ViewPager) findViewById(R.id.viewpager);
orderamount=findViewById(R.id.orderamount);
ordercount=findViewById(R.id.ordercount);
Calendar calendar=Calendar.getInstance();
Date Today = calendar.getTime();
SimpleDateFormat df = new SimpleDateFormat("dd MMM \n EEEE");
String formattedToday = df.format(Today);
tablayout.addTab(tablayout.newTab().setText(formattedToday));
for(int i=1;i<=30;i++){
calendar.add(calendar.DATE,-1);
Date newDate = calendar.getTime();
String formattedDate = df.format(newDate);
tablayout.addTab(tablayout.newTab().setText(formattedDate));
}
tablayout.setTabGravity(TabLayout.GRAVITY_FILL);
DateAdapter adapter=new DateAdapter(getSupportFragmentManager(), this,tablayout.getTabCount());
viewpager.setAdapter(adapter);
viewpager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tablayout));
tablayout.setOnTabSelectedListener(this);
back_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
@Override
public void onTabSelected(TabLayout.Tab tab) {
OrderListFragment orderListFragment=new OrderListFragment();
TabName=tab.getText().toString();
Toast.makeText(getApplicationContext(),"1st"+TabName,Toast.LENGTH_SHORT).show();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
public void SetCountText(Integer count){
ordercount.setText(count.toString());
}
public void SetAmountText(Double amt){
orderamount.setText(String.format("%.2f",amt));
}
}
Adapter class
Fragments
Activityclass