添加列表视图,作为可在导航栏中选择的视图

时间:2015-04-27 03:12:39

标签: android listview fragment navigation-drawer

首先关闭;我想为这个冗长的问题道歉。我虽然这是了解我想要做的事情的唯一方法。无论如何。我有一个应用程序,用户导航抽屉,将为用户提供3种选择。我希望Test1Fragment成为列表视图。我似乎无法弄清楚如何实现这一目标。请帮忙。

MainActivity方法,根据选择控制加载哪个片段:

    private void selectItem(int position) {
    // update the main content by replacing fragments

    Fragment fragment = null;

    switch (position) {
        case 0:
            fragment = new Test1Fragment();
            break;
        case 1:
            fragment = new Test2Fragment();
            break;
        case 2:
            fragment = new Test3Fragment();
            break;
        default:
            break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

        // update selected item and title, then close the drawer
        mDrawerList.setItemChecked(position, true);
        mDrawerList.setSelection(position);
        setTitle(mNavigationDrawerItemTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);

    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }
}

Test1Fragment:

public class Test1Fragment extends Fragment {


public Test1Fragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_create, container, false);

    return rootView;
}

fragment_create.xml:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<!--<TextView-->
    <!--android:id="@+id/txtLabel"-->
    <!--android:layout_width="wrap_content"-->
    <!--android:layout_height="wrap_content"-->
    <!--android:layout_centerInParent="true"-->
    <!--android:text="Create View"-->
    <!--android:textSize="16dp" />-->

<!--<ImageView-->
    <!--android:layout_width="wrap_content"-->
    <!--android:layout_height="wrap_content"-->
    <!--android:layout_below="@id/txtLabel"-->
    <!--android:layout_centerHorizontal="true"-->
    <!--android:layout_marginTop="10dp"-->
    <!--android:src="@drawable/ic_action_copy" />-->

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

我知道我缺少listview的代码,但这是我想要的xml视图。

谢谢

1 个答案:

答案 0 :(得分:0)

在您当前的实现中,您的布局代码应该在示例中查找:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <ListView
        android:id="@+id/layout_fragment_listView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

</LinearLayout>

然后在您的课程中,您必须使用数据填充listview。您必须创建适配器并将数据附加到此适配器。然后必须将适配器传递给listview。 快速举例:

public class Test1Fragment extends Fragment { 

//No need for empty constructor, it is made by default
//public Test1Fragment() { 
//} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_create, container, false);

   ListView listView =(ListView)rootView.findViewById(R.id.layout_fragment_listView);

   String[] items = { "Milk", "Cheese", "Cucumber", "Toilet", "Duck" };

   ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                    android.R.layout.simple_list_item_1, items);

   listView.setAdapter(adapter);


    return rootView;
} 

这样您就可以使用数组项中的字符串填充listview。 这是一个非常基本的示例,您还可以扩展基本适配器,并使用您自己的对象和视图填充它。

以下是结果屏幕截图:list