导航抽屉列表视图不显示数组的第一个元素

时间:2014-12-25 00:11:37

标签: android navigation-drawer

更新:我认为问题可能是ListView开始过高,因此列表视图的第一个元素存在但未显示在屏幕上。我知道第一个元素存在,但它没有显示。我一直在试验RecyclerView,我遇到了类似的问题:RecyclerView的第一个元素开始太高,其中一半被切断了。有谁知道为什么会发生这种情况?

我制作的导航抽屉与Google developer页面上的导航抽屉大致类似。问题是抽屉不会显示我正在使用的数组的0元素 - 它只显示元素1和2。

请参阅下面的相关代码。我正在运行Android 5.0.1并且万一重要,我的主题是Material.Light.DarkActionBar

我不确定为什么这不起作用。谢谢!

MainActivity

private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private ListView mDrawerList;

@Override
public void onCreate(Bundle savedInstanceState)
{
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
    mDrawerToggle = new ActionBarDrawerToggle(
            this,
            mDrawerLayout,
            R.string.drawer_open,
            R.string.drawer_close)
    {
        public void onDrawerClosed(View view) {...}

        public void onDrawerOpened(View drawerView) {...}
    };
}

    mDrawerLayout.setDrawerListener(mDrawerToggle);

    mDrawerList = (ListView) findViewById(R.id.leftDrawer);

    //NavDrawerItem is just a simple class with only a constructor to assign the int and String
    NavDrawerItem [] navDrawerItems = new NavDrawerItem[3];

    //NAVIGATION DRAWER ONLY SHOWS "ARCHIVE" AND "GALLERY"
    navDrawerItems[0] = new NavDrawerItem(R.drawable.ic_menu_home, "Home");
    navDrawerItems[1] = new NavDrawerItem(R.drawable.ic_menu_archive, "Archive");
    navDrawerItems[2] = new NavDrawerItem(android.R.drawable.ic_menu_gallery, "Gallery");

    mDrawerList.setAdapter(new NavDrawerAdapter(this, R.layout.drawer_list_item, navDrawerItems));

NavDrawerAdapter extends ArrayAdapter<NavDrawerItem>

private final Context context;
private final int layoutResourceId;
private NavDrawerItem data[] = null;

public NavDrawerAdapter(Context context, int layoutResourceId, NavDrawerItem [] data)
{
    super(context, layoutResourceId, data);
    this.context = context;
    this.layoutResourceId = layoutResourceId;
    this.data = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    LayoutInflater inflater = ((Activity) context).getLayoutInflater();

    View v = inflater.inflate(layoutResourceId, parent, false);

    ImageView imageView = (ImageView) v.findViewById(R.id.navDrawerImageView);
    TextView textView = (TextView) v.findViewById(R.id.navDrawerTextView);

    NavDrawerItem choice = data[position];

    imageView.setImageResource(choice.icon);
    textView.setText(choice.name);

    return v;
}

drawerLayout.xml

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:id="@+id/fragmentContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </RelativeLayout>

    <ListView android:id="@+id/leftDrawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#eeeeee"/>

</android.support.v4.widget.DrawerLayout>

drawer_list_item.xml

<RelativeLayout
    ...>

    <ImageView
        ...>

    <TextView
        ...>

</RelativeLayout>

0 个答案:

没有答案