个人技术博客
个人技术博客——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就很好的解决了这个问题。提高了效率和用户体验。