个人技术博客

个人技术博客——fragment中嵌套listview

首先,fragment是将布局碎片化的一种工具。通过使用fragment,你可以在同一个活动中切换不同的布局,并且可以在切换屏幕中一部分你想切换的布局中。保留你想保留的控件与布局。这样就会大大的节省activity之间的切换。

listview很好理解。就是可以上下滑动的控件。listview由若干个item所组成,每个item可互相独立。item组成列表即listview。
首先,是在布局中定义一块碎片。

   <FrameLayout
    android:id="@+id/fg2"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>

~
然后,在添加新的布局。新添加的布局是item布局。即listview中每一个元素的基本构成在这个布局中定义。

 <?xml version="1.0" encoding="utf-8"?>
     <FrameLayout 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/list_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_margin="10dip"
    android:divider="#FFF"
    android:dividerHeight="1px" />

然后。在就是再添加一个类。这个类将 listview这个控件调用到你之前所定义的fragment中,完成在fragment中嵌套listview。在此之后,你可以在主活动之中调用这个类,从而把fragment再调用到活动中。

代码如下:

import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.ListFragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;

public class ChatListView extends Fragment {

private ListView lv;
private String Data[]={"北京","sh","fz","xm","hz","上海","福州","南宁","厦门","广西","广州","陕西","深圳","黑龙江"};

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View view= inflater.inflate(R.layout.list_view , container, false);
    ListView listView = (ListView)view.findViewById(R.id.list_view);
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1,Data);
    listView.setAdapter(arrayAdapter);
    return view;

}

}

其中定义item,需要用到适配器adapter,在这里,我并没有自定义适配器(定义适配器的方法可以自行百度,不复杂)
特别要注意的是,在上面这个类中,要继承Fragment类而不用继承Fragmentlist。
而且最终返回值要是 view。不然可能就会造成在真机调试apk的时侯出现闪退现象。
(一般闪退现象首先要考虑你布局文件,或者加载布局文件的时侯出了问题)

与团队项目的关系

我主要是负责日程管理界面的编写。其中用户可以灵活的切换他所需要显示的日程天数。如果不用fragment而用activity来叠的话。那么用户在注销活动的时侯就会非常麻烦,需要不停的按back键。而使用fragment就很好的解决了这个问题。提高了效率和用户体验。

posted on 2017-11-16 10:29  汤川学的贝雷帽  阅读(218)  评论(1编辑  收藏  举报

导航