【发布时间】:2017-04-04 11:01:22
【问题描述】:
第一个选项卡不显示片段。
我正在使用以下方法来创建新标签。
public static void addNewTab(String TimelineName, String id) {
TabLayout.Tab tab = tabs.newTab();
tab.setText(TimelineName)
tabs.addTab(tab);
adapter.addTab(TimelineName);
}
adapter.add(Timeline) 是以下类中的一个方法:
public class TabsPagerAdapter extends PagerAdapter {
private final ArrayList<CharSequence> myTabList = new ArrayList<>();
int TabPosition = 0;
public static List<Bean_TimelineData> timelineData;
public static TimeLine_Adapter timeLineAdapter;
public static RecyclerView timelineRecyclerView;
// CREATE NEW TAB
public void addTab(String title) {
myTabList.add(title);
notifyDataSetChanged();
}
public void removeTab() {
if (!myTabList.isEmpty()) {
myTabList.remove(myTabList.size() - 1);
notifyDataSetChanged();
}
}
@Override
public int getCount() {
return myTabList.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
LinearLayout linearLayout = new LinearLayout(container.getContext());
timelineRecyclerView = new RecyclerView(container.getContext());
SwipeRefreshLayout swipeContainer;
timelineData = new ArrayList<Bean_TimelineData>();
timeLineAdapter = new TimeLine_Adapter(container.getContext(), timelineData, TabId);
timelineRecyclerView.setLayoutManager(new LinearLayoutManager(container.getContext()));
timelineRecyclerView.setAdapter(timeLineAdapter);
linearLayout.setOrientation(LinearLayout.VERTICAL);
linearLayout.setBackgroundColor(Color.parseColor("#f2f2f2"));
container.addView(linearLayout, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
params.setMargins(0, 20, 0, 0);
timelineRecyclerView.setLayoutParams(params);
linearLayout.addView(timelineRecyclerView);
return linearLayout;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public CharSequence getPageTitle(int position) {
return myTabList.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
但是我得到的结果是这样的:
让所有标签都正常工作:
如果我从 1 到 3 滑动标签,然后返回 1,片段会正确显示。
我查看了一些关于此的帖子,例如:This SO post
没有任何效果。
编辑
我想动态添加标签。 在第一个选项卡上,没有调用选项卡 pageradapter。这就是为什么第一个选项卡显示为空,其余所有工作正常。
【问题讨论】:
-
你解决了吗
标签: android android-fragments tabs android-viewpager