我有3个选项卡在查看寻呼机名称(计划,在处理和完成)的位置分别为0,1,2。我现在面临的问题是,当创建视图时,它执行方法loadData()
来加载“Scheduled”和“InProcess”数据。然后,当我滑动到“进程中”片段时,“完成”数据加载。但是当我滑动到“完成”片段时,什么也没有发生。然后,当我滑回“进程中”片段,它加载“计划”数据等。我做错了什么。
- TabFragment. java**
public static TabFragment newInstance(int position, String name) {
TabFragment fragment = new TabFragment();
Bundle args = new Bundle();
args.putInt(ARG_TAB_POSITION, position);
args.putString(ARG_TAB_NAME, name);
fragment.setArguments(args);
return fragment;
}
public TabFragment() {
// Required empty public constructor
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
this.context = context.getApplicationContext();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
int position = getArguments().getInt(ARG_TAB_POSITION);
String name = getArguments().getString(ARG_TAB_NAME);
itemList = new ArrayList<>();
}
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view;
int tabPosition = getArguments() != null ? getArguments().getInt(ARG_TAB_POSITION) : -1;
String tabName = getArguments() != null ? getArguments().getString(ARG_TAB_NAME) : "";
// Inflate the corresponding layout file based on the tab position
switch (tabPosition) {
case 0:
view = inflater.inflate(R.layout.fragment_tab_scheduled, container, false);
recyclerView = view.findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager);
recyclerViewAdapter = new MeetingListAdapter(context);
recyclerView.setAdapter(recyclerViewAdapter);
noDataAnimationView=view.findViewById(R.id.noDataAnimationView);
loadData();
break;
case 1:
view = inflater.inflate(R.layout.fragment_tab_inprocess, container, false);
recyclerView = view.findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager2 = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager2);
recyclerViewAdapter = new MeetingListAdapter(context);
recyclerView.setAdapter(recyclerViewAdapter);
noDataAnimationView=view.findViewById(R.id.noDataAnimationView);
loadData();
break;
case 2:
view = inflater.inflate(R.layout.fragment_tab_finished, container, false);
recyclerView = view.findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager3 = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager3);
recyclerViewAdapter = new MeetingListAdapter(context);
recyclerView.setAdapter(recyclerViewAdapter);
noDataAnimationView=view.findViewById(R.id.noDataAnimationView);
loadData();
break;
default:
// Return an empty view if the tab position is invalid
return new View(context);
}
// Load data if it hasn't been loaded yet
return view;
}
private void loadData() {
int tabPosition = getArguments() != null ? getArguments().getInt(ARG_TAB_POSITION) : -1;
String tabName = getArguments() != null ? getArguments().getString(ARG_TAB_NAME) : "";
// Perform the appropriate Volley request based on the tab position
switch (tabPosition) {
case 0:
GET_MEETING_LIST("Scheduled");
Log.i("KICK", "Tab-Scheduled");
break;
case 1:
GET_MEETING_LIST("InProcess");
Log.i("KICK", "Tab-InProcess");
break;
case 2:
GET_MEETING_LIST("Finished");
Log.i("KICK", "Tab-Finished");
break;
default:
// Handle invalid tab position
break;
}
}
- Activity. java**
public class MeetingListActivity extends AppCompatActivity {
private ViewPager viewPager;
private TabLayout tabLayout;
private TabAdapter adapter;
private List<TabFragment> fragmentList;
private static final String ARG_TAB_NAME = "tab_name";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_meeting_list);
viewPager = findViewById(R.id.viewPager);
tabLayout = findViewById(R.id.tabLayout);
fragmentList = new ArrayList<>();
fragmentList.add(TabFragment.newInstance(0, "Scheduled"));
fragmentList.add(TabFragment.newInstance(1, "InProcess"));
fragmentList.add(TabFragment.newInstance(2, "Finished"));
adapter = new TabAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
private class TabAdapter extends FragmentPagerAdapter {
public TabAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return fragmentList.get(position).getArguments().getString(ARG_TAB_NAME);
}
@Override
public int getItemPosition(Object object) {
// Force fragments to be recreated when the position changes
return POSITION_NONE;
}
}
}
1条答案
按热度按时间mdfafbf11#
默认情况下,Viewpager加载2个片段/页。所以只能加载一个。