【发布时间】:2019-09-14 10:24:35
【问题描述】:
我的所有标签只使用一个片段。
但我无法将选定的选项卡名称传递给我的片段,因此我可以加载我的订单详细信息数据。我在片段中有一个TextView,每当我单击任何选项卡时,我都需要将其文本更改为选项卡名称。
我的代码如下。
在 DateAdapter(PageViewer 适配器)中
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;
}
}
在OrderListFragment中(普通片段)
@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;
}
在 SalesOrderActivity(主要活动)中
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));
}
}
【问题讨论】:
-
请提供完整的 PageViewer 适配器代码
-
@MuhammadUsmanButt - 按要求编辑,现在显示完整的 PageViewer 适配器代码,等待解决方案。提前致谢。
标签: android android-fragments android-viewpager android-tablayout android-pageradapter