我已經搜索過了,而且我從昨天開始就在搜索和做一些隨機的事情
。在片段A中,我有一個與ViewPager2相連的標簽布局。
而第一個標簽有一個帶有recyclerview的片段。當我打開片段A時,我不能在recyclerview中看到任何專案。但是當我改變標簽并回到第一個標簽時,專案出現了。
我試過的東西
我已經做了類似的事情。
view pager 和 tablayout 的代碼
ViewPager2 viewPager2 = view.findViewById(R.id.shopVP);
viewPager2.setAdapter(new ShopMenuTabAdapter(getActivity())。
TabLayout tabLayout = view.findViewById(R.id.shopTab);
TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> {
switch (position){
case 0:
tab.setText("服務類別")。
break;
case 1:
tab.setText("Reviews")。
break;
case 2:
tab.setText("About")。
break。
}
});
tabLayoutMediator.attach()。
標簽配接器的代碼
List<Fragment> mData = Arrays.asList( //你可以看到我有三個標簽。
new ShopServicesCategories(), //recyclerview是在這個標簽里。
new ShopReview() 。
new ShopAbout()
);
public ShopMenuTabAdapter(@NonNull FragmentActivity fragmentActivity) {
super(fragmentActivity)。
}
@NonNull
@Override[/span
public Fragment createFragment(int position) {
return mData.get(position)。
}
@Override
public int getItemCount() {
return mData.size()。
}
這就是我如何設定recyclerview及其配接器的方法
//由于 "服務類別 "和 "子版塊 "有相同的變數,我懶得專門為類別創建一個模型
// in class
RecyclerView rv;
List<SubSectionModel> mData = new ArrayList< > ();
SubSectionAdapter mAdapter;
LinearLayoutManager llm = new LinearLayoutManager(getActivity())。
//在onCreateView中
rv = view.findViewById(R.id.shop_sservice_cat_rv) 。
rv.setLayoutManager(llm)。
//class中
//I call this method after adding data to ArrayList.
private void setupRecyclerView(List< SubSectionModel> mData) {
mAdapter = new SubSectionAdapter(getActivity() 。mData, new SubSectionAdapter. OnItemClickListener() {
@Override。
public void onItemClick(SubSectionModel subSectionModel){
Log.i("click",subSectionModel. getSub() " " subSectionModel.getHave_sub_sec() )。
openSubSec(subSectionModel.getSub() )。
}
});
rv.setAdapter(mAadapter)。
}
uj5u.com熱心網友回復:
我剛剛改變了recyclerview的高度,以包裹內容而不是0dp(匹配約束)。
uj5u.com熱心網友回復:
首先,獲得資料,然后設定你的標簽。
或者
從服務器獲取資料需要太多的時間,那么你可以簡單地將這些資料獲取到你的主活動中,并在你的應用程式中全域存盤,然后將這些資料傳遞給你的標簽。
將引數傳入片段
adapter.addFragment(AboutFragment.newInstance(data), "About")。)
adapter.addFragment(SkillsFragment.newInstance(data), "Skills") 。
主應用程式類:
public class App extends Application {
public static List< UserInfo> userInfo = new ArrayList<>()。
public static List< 技能> skillsList = new ArrayList<> ()。
public static Users getUserInfo() {
return userInfo;
}
public static void setUserInfo(UserInfo userInfo) {
App.userInfo = userInfo;
}
public static Users getSkillsList(){
return skillsList;
}
public static void setSkillsList(Skills skillsList) {
App.skillsList = skillsList;
}
然后把這個添加到你的清單中:
<application
android:name=".App"/span>
....>
....
....
</application>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/332746.html
標籤:
