我在每个标签片段中制作动态列表视图的动态标签。问题是,当我在两个连续的选项卡之间切换时,会显示前一个选项卡的xml,但是当我单击非连续选项卡时,它可以正常工作。不知道问题出在哪里,所以我在这里附上我的片段类和HomeActivity`enter代码。
$("#myList").val($("#myList option:first").val());
提前致谢。
答案 0 :(得分:0)
所以,我把一些模拟数据用于测试,这里有一个工作示例(我修改了你的代码,它仍然需要一些增强但是它有效)。
<强> HomeActivity2.java:强>
public class HomeActivity2 extends AppCompatActivity {
public ViewPagerAdapter adapter;
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
private ArrayList<String> mappingOfCategoryWithIndex = new ArrayList<>();
private ArrayList<MenuItem> allMenuItemsList = new ArrayList<MenuItem>();
private ArrayList<MenuItemCategory> allMenuItemCategoryList = new ArrayList<MenuItemCategory>();
//Getters
public ViewPager getViewPager() {
return viewPager;
}
public ArrayList<String> getMappingOfCategoryWithIndex() {
return mappingOfCategoryWithIndex;
}
public ArrayList<MenuItem> getAllMenuItemsList() {
return allMenuItemsList;
}
public TabLayout getTabLayout() {
return tabLayout;
}
public ArrayList<MenuItemCategory> getAllMenuItemCategoryList() {
return allMenuItemCategoryList;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home2);
findViewById(R.id.tabs).bringToFront();
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
allMenuItemsList = new ArrayList<>();
allMenuItemsList.add(new MenuItem("Item 1", "Category 1"));
allMenuItemsList.add(new MenuItem("Item 2", "Category 1"));
allMenuItemsList.add(new MenuItem("Item 3", "Category 2"));
allMenuItemsList.add(new MenuItem("Item 4", "Category 3"));
allMenuItemsList.add(new MenuItem("Item 5", "Category 3"));
allMenuItemCategoryList = new ArrayList<>();
allMenuItemCategoryList.add(new MenuItemCategory("Category 1"));
allMenuItemCategoryList.add(new MenuItemCategory("Category 2"));
allMenuItemCategoryList.add(new MenuItemCategory("Category 3"));
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
setupTabIcons();
}
private void setupTabIcons() {
for (int i=0; i<allMenuItemCategoryList.size() ; i++){
TextView tab = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
tab.setText(allMenuItemCategoryList.get(i).Menu_Item_Category_Name);
mappingOfCategoryWithIndex.add(i, allMenuItemCategoryList.get(i).Menu_Item_Category_Name) ;
tabLayout.getTabAt(i).setCustomView(tab);
}
}
private void setupViewPager(ViewPager viewPager) {
adapter = new ViewPagerAdapter(getSupportFragmentManager());
for (int i=0 ; i<allMenuItemCategoryList.size() ; i++) {
String category = allMenuItemCategoryList.get(i).Menu_Item_Category_Name;
adapter.addFrag(TabCategory.getTabCategoryFragment(category), category);
}
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFrag(Fragment fragment, String title ) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}
<强> TabCategory.java:强>
public class TabCategory extends Fragment {
private static final String KEY_CATEGORY = "category";
private TextView nameOfItem;
private HomeActivity2 activity;
private LinearLayout container1;
public ArrayList<String> mappingOfCategoryWithIndex = new ArrayList<>();
public ArrayList<MenuItem> allMenuItemsList1 = new ArrayList<MenuItem>();
private String selectedCategory;
private ArrayList<MenuItem> menuItemsOfSelectedCategory = new ArrayList<>();
private View rootView;
public TabCategory() {
}
public static TabCategory getTabCategoryFragment(String selectedCategory) {
TabCategory tabCategory = new TabCategory();
Bundle args = new Bundle();
args.putString(KEY_CATEGORY, selectedCategory);
tabCategory.setArguments(args);
return tabCategory;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
selectedCategory = getArguments().getString(KEY_CATEGORY);
activity = (HomeActivity2) getActivity();
allMenuItemsList1 = activity.getAllMenuItemsList();
mappingOfCategoryWithIndex = activity.getMappingOfCategoryWithIndex();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
rootView = inflater.inflate(R.layout.tab_category, container, false);
container1 = (LinearLayout) rootView.findViewById(R.id.container1);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LayoutInflater layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
container1.removeAllViews();
menuItemsOfSelectedCategory.clear();
for (int i = 0; i < allMenuItemsList1.size(); i++) {
if (allMenuItemsList1.get(i).getCategoryName().equals(selectedCategory)) {
menuItemsOfSelectedCategory.add(allMenuItemsList1.get(i));
}
}
for (int i = 0; i < menuItemsOfSelectedCategory.size(); i++) {
final View addView = layoutInflater.inflate(R.layout.menu_item, null);
nameOfItem = (TextView) addView.findViewById(R.id.nameofitem);
nameOfItem.setText(menuItemsOfSelectedCategory.get(i).getName());
container1.addView(addView);
}
}
}