如何在选项卡中更改导航抽屉的项目列表

时间:2015-08-17 16:24:15

标签: android android-fragments android-navigation

我在我的应用程序中使用带滑动标签的导航抽屉,我想根据标签更改导航抽屉的项目列表。例如,在带有项目1项目2的选项卡1导航抽屉和带有项目3和项目4的选项卡2导航抽屉中。 这是我的导航抽屉片段类的代码

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);;
    recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
    recyclerAdapter  = new RecyclerAdapter(getActivity(), getData());
    recyclerView.setAdapter(recyclerAdapter);
    //recyclerAdapter.setClickListener(this);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    /*recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(),
            recyclerView, new ClickListener() {
        @Override
        public void onClick(View view, int position) {
            startActivity(new Intent(getActivity(), SubActivity.class));
        }

        @Override
        public void onLongClick(View view, int position) {
            startActivity(new Intent(getActivity(), SubActivity.class));

        }
    } ));*/
    return view;
}


public List<Information> getData(){
    List<Information> data = new ArrayList<>();
    int[] icons = {R.drawable.abc_ic_ab_back_mtrl_am_alpha, R.drawable.abc_ic_ab_back_mtrl_am_alpha,
            R.drawable.abc_ic_ab_back_mtrl_am_alpha};
    String[] title = {"Title 1", "Title 2", "Title 3"};

    for (int i=0; i<icons.length; i++) {
        Information information = new Information();
        information.setResIdImage(icons[i]);
        information.setText(title[i]);
        data.add(information);
    }
    return data;
}

这是制表类的代码

public class Tab2 extends NavigationDrawerFragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.tab2, container, false);
        TextView textView = (TextView) view.findViewById(R.id.textView);
        textView.setText("The position is 2");
    return view;
}
}

所以,我想从tab2类更改navigationDrawerFragment类的getData()方法项。 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以添加此

private NavigationDrawerAdapter adapter;
private static String[] titles = null;
private static String[] icons = null;
...
public void setItems(String[] titles,String[] icons) {
    // drawer labels
    this.titles = titles;
    this.icons = icons;
    this.adapter.data = getData();
}

public static List<NavDrawerItem> getData() {
    List<NavDrawerItem> data = new ArrayList<>();

    // preparing navigation drawer items
    for (int i = 0; i < titles.length; i++) {
        NavDrawerItem navItem = new NavDrawerItem();
        navItem.setTitle(titles[i]);
        navItem.setIcon(icons[i]);
        data.add(navItem);
    }

    return data;
}

到FragmentDrawer类