홈>
Activity
가있다
2 개의 조각으로.
ParentTabFragment
선언
내
Activity
에서
TabLayout
가있는 곳
그리고
ViewPager
.
내
ParentTabFragment
에 방법이있다
addPage
라고
Activity
에서 호출됩니다
.
addPage
addFrag
라는 또 다른 방법이 있습니다
이것은
ViewPagerAdapter
에서 호출
views
만들기
ChildTabFragment
에서
동적으로.
for loop
가있다
어느
Activity
에서 실행
그래서
Fragments
customList
의 항목 수에 따라 생성됩니다.
,
tabs
의 양을 만들기
및
Fragments
의 페이지
.
ChildTabFragment
에서
나는
customList
를로드
tab
에서
선택
event
,
내가
Tab
를 선택할 때
ParentTabFragment
에서
나는
getTabID()
를 호출
ChildTabFragment
의 방법
Tab
의 ID를 보내
내가
customList
를로드로 인해
ParentTabFragment
의 ID에 따르면
.
문제는 탭을 스 와이프하거나 선택할 때
customList
에서 중복/거짓 데이터가 생성되는 것입니다
.
나는 적당한
Id
를 얻는다
선택한 탭에서 메소드에 전달하려고하면 임의의 ID가 호출됩니다.
내 활동 수업에서 :
for (int j =0;j<it.size();j++){
parentTabFragment.addPage(it.get(j).getTabMenuItem(), it.get(j).getTabMenuId() , selectedMenu);
}
ParentTabFragment :
public void addPage(String pagename, String pageId, String selectedMenu) {
Bundle bundle = new Bundle();
bundle.putString("data", pagename);
//bundle.putString("pageID", pageId);
childTabFragment = new ChildTabFragment();
childTabFragment.setArguments(bundle);
adapter.addFrag(childTabFragment, pagename, pageId);
adapter.notifyDataSetChanged();
if (selectedMenu == null) {
viewPager.setCurrentItem(0);
} else {
for (int i = 0; i < tabLayout.getTabCount(); i++) {
if (tabLayout.getTabAt(i).getText().equals(selectedMenu)) {
viewPager.setCurrentItem(i);
}
}
}
if (adapter.getCount() > 0) tabLayout.setupWithViewPager(viewPager);
setupTabLayout();
}
public void setupTabLayout() {
selectedTabPosition = viewPager.getCurrentItem();
for (int i = 0; i < tabLayout.getTabCount(); i++) {
tabLayout.getTabAt(i).setCustomView(adapter.getTabView(i));
}
}
ChildTabFragment :
public class ChildTabFragment extends Fragment {
String childname;
int menuItemId;
TextView textViewChildName, txtViewItemId;
ListView childTabMenuList;
private ArrayList<ChildTabMenu_POJO> childTabMenuPojoList = new ArrayList<>();
private ListView listView;
private ChildTabMenuAdapter childTabMenuAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.child_tab_fragment, container, false);
Bundle bundle = getArguments();
childname = bundle.getString("data");
getIDs(view);
return view;
}
private void getIDs(View view) {
childTabMenuList = (ListView) view.findViewById(R.id.childTabMenuList);
loadChildMenu();
}
private void loadChildMenu(menuItemId) {
ChildTabMenu_POJO menu_pojo4 = new ChildTabMenu_POJO(String.valueOf(menuItemId), "4");
childTabMenuPojoList.add(menu_pojo4);
childTabMenuAdapter = new ChildTabMenuAdapter(childTabMenuPojoList, getActivity());
childTabMenuList.setAdapter(childTabMenuAdapter);
}
public void getTabID(int tabId) {
menuItemId = tabId;
Log.e("updatefrag", String.valueOf(menuItemId));
}
}
ViewPagerAdapter :
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
private final ArrayList<Fragment> mFragmentList = new ArrayList<>();
private final ArrayList<Adapter_POJO> mFragmentTitleList = new ArrayList<>();
Context context;
ViewPager viewPager;
TabLayout tabLayout;
Adapter_POJO adapter_pojo;
public ViewPagerAdapter(FragmentManager manager, Context context, ViewPager viewPager,
TabLayout tabLayout) {
super(manager);
this.context = context;
this.viewPager = viewPager;
this.tabLayout = tabLayout;
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public int getItemCount() {
return mFragmentTitleList.size();
}
public void addFrag(Fragment fragment, String title, String pageId) {
mFragmentList.add(fragment);
adapter_pojo = new Adapter_POJO(title,pageId);
mFragmentTitleList.add(adapter_pojo);
}
public View getTabView(final int position) {
View view = LayoutInflater.from(context).inflate(R.layout.view_pager_adapter_layout, null);
TextView tabItemName = (TextView) view.findViewById(R.id.textViewTabItemName);
tabItemName.setText(mFragmentTitleList.get(position).adapterMenuItem);
tabItemName.setTextColor(context.getResources().getColor(android.R.color.background_light));
return view;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position).adapterMenuItem;
}
public String getPageId(int position){
return mFragmentTitleList.get(position).adapterMenuId;
}
}
- 답변 # 1
관련 자료
- javascript - 동적으로 생성 된 ID에서 클릭 이벤트 트리거 (상위 요소를 기반으로하는 ID 사용)
- checkbox - WPF는 동적으로 생성 된 확인란을 LiveCharts에서 동적으로 생성 된 시리즈에 어떻게 바인딩합니까?
- php - Jquery로 동적으로 생성 된 데이터 테이블
- typescript - 기본값으로 동적으로 생성 된 초기화 된 객체 - 제네릭과 인터페이스 사용
- javascript - 동적으로 생성 된 여러 퀼 편집기가 동일한 도구 모음을 사용할 수 있습니까?
- c# - 동적으로 만들어진 컨트롤을 폼에 저장/열기
- vb.net - 동적으로 생성 된 텍스트 상자에서 데이터베이스에 데이터를 저장하는 방법
- javascript - slideToggle 콜백에서 동적으로 생성 된 ID 전달
- typescript - 동적으로 생성되는 클래스 메서드의 유형을 암시하는 방법은 무엇입니까?
- python - pytest가 동적으로 작성된 모듈을 찾을 수 없습니다
- python - 텍스트 상자에 값을 삽입하고 싶지만 요소가 동적으로 만들어 지므로 자바 스크립트에서 요소 ID를 정의 할 수 없습니다
- 자바 스크립트에서 동적으로 생성 된 확인란과 라디오 버튼에서 입력을 얻는 방법은 무엇입니까?
- php - 동적으로 생성 된 확인란을 전환 할 수 없습니다
- PowerShell의 Get-ChildItem에 대해 동적으로 생성 된 매개 변수 인수
- wpf - 동적으로 생성 된 차트 및 동적 확인란을 사용하여 LiveCharts 시리즈를 숨기고 표시하려면 어떻게해야합니까?
- java - JFrame에서 동적으로 생성 된 변수에서 데이터 가져 오기
- variables - Javascript를 사용하여 동적으로 생성 된 테이블 행 및 열 값을 합계하는 가장 좋은 방법은 무엇입니까?
- javascript - 동적으로 생성 된 버튼에 대한 클릭 이벤트 추가
- c++ - Qt에서 동적으로 생성 된 위젯의 데이터를 가장 잘 저장하는 방법
- jquery - 동적으로 생성 된 콘텐츠로 Div를 지우는 문제
관련 질문
- android : 테마 PreferenceFragmentCompat
- android : NavigationUI의 동일한 호스트 활동에서 데이터 전달 및 조각 텍스트 /버튼 업데이트
- android : 레이아웃의 조각 자리 표시 자
- android : 탐색 유형 safeargs 플러그인을 사용하여 Parcelable 유형의 객체를 Fragment에 전달하는 방법
- java : SharedPreference가 작동하지 않으며 런타임 오류가 없습니다.
- android : 활동의 QuickReturn ListView? 활동의 2 개보기에서 어려움
- Android MVVM 데이터 바인딩 EditText 값이 조각에서 onConfigurationChanged 손실 됨
- java : 조각 Android에서 조각 열기
- android : 목록에서 열린 각 조각 항목의 상태를 저장하는 방법은 무엇입니까?
- android : setFragmentResult가 onClick 리스너를 작동하지 않습니다.
질문을 이해하면 인수가있는 조각을 만들기 위해 newInstance 생성자를 만들어야합니다.
ChildTabFragment에 전달 된 인수를 기반으로 인스턴스 변수를 저장하십시오.
이제
onCreateView
에서 뷰를 업데이트하십시오. 방법그리고 가장 중요한 것은
ChildTabFragment
를 반환합니다. 귀하의ViewPagerAdapter
에서 해당 페이지에 표시 이렇게요.