如何使用子菜单实现导航抽屉

时间:2014-10-30 13:00:57

标签: android navigation-drawer

我正在尝试在导航器中的一个项目上创建一个子菜单。到目前为止,这是我的代码:

navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1)));

这列出了项目,但现在在naMenuTitles [1]下(例如)我想创建4个子标题,并在点击它们时启动该特定项目的活动。

现在我有这些代码,但不知道在哪里实现它们:

public void setChildGroupData() {

        child = new ArrayList<String>();
        child.add("test1");
        child.add("test2");
        child.add("test3");
        child.add("test4");
        childItem.add(child);

所以我试过的是:

navDrawerItems = new ArrayList<NavDrawerItem>();
    childItem = new ArrayList<Object>(); 


    navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
    child = new ArrayList<String>();
    child.add("test1");
    child.add("test2");
    child.add("test3");
    child.add("test4");
    childItem.add(child);

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));

启动时应用中没有错误,但似乎无法正常工作。 我需要做些什么才能解决这个问题? 任何帮助将不胜感激!

修改

这是我的NavDrawerListAdapter类:

public class NavDrawerListAdapter extends BaseAdapter {

private Context context;
private ArrayList<NavDrawerItem> navDrawerItems;
public ArrayList<Object> Childtem = new ArrayList<Object>();
private ArrayList<Object> childItem;

public NavDrawerListAdapter(Context context, ArrayList<NavDrawerItem> navDrawerItems){
    this.context = context;
    this.navDrawerItems = navDrawerItems;
    this.Childtem = childItem;

}

@Override
public int getCount() {
    return navDrawerItems.size();
}


@Override
public Object getItem(int position) {       
    return navDrawerItems.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater mInflater = (LayoutInflater)
                context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        convertView = mInflater.inflate(R.layout.drawer_list_item, null);
    }

    ImageView imgIcon = (ImageView) convertView.findViewById(R.id.icon);
    TextView txtTitle = (TextView) convertView.findViewById(R.id.title);
    TextView txtCount = (TextView) convertView.findViewById(R.id.counter);

    imgIcon.setImageResource(navDrawerItems.get(position).getIcon());        
    txtTitle.setText(navDrawerItems.get(position).getTitle());

    // displaying count
    // check whether it set visible or not
    if(navDrawerItems.get(position).getCounterVisibility()){
        txtCount.setText(navDrawerItems.get(position).getCount());
    }else{
        // hide the counter view
        txtCount.setVisibility(View.GONE);
    }

    return convertView;
}

}

0 个答案:

没有答案