ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用
该类有几个特点:
1、ListFragment 本身具只有一个ListView视图,返回的也是一个只有ListView的布局对象
2、ListFragment 不需要指定布局,本身固定,只有一个ListView视图
3、给ListFragment中的ListView加载数据或者绑定适配器都只能出现onCreateView(),因为onCreateView方法之后,ListView对象才创建,
4、给 ListView设置适配器 用setListAdapter
5、ListFragment已经实现了其ListView中的数据项的事件监听,可根需求重写onListItemClick方法
------------------------------------------------------------------------------------------------------------------------------------------------
下面看一个Demo
注意fragment是在3.0才开始支持的 ,如果导入的包是import android.app.
清单文件中需要改最低SDK版本为11
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="21" />
如果导入的包是 import android.support.v4.app.
则清单文件不需要改动
1 package com.xqx.listviewfragment;
2
3 import android.os.Bundle;
4 import android.app.Activity;
5 import android.app.FragmentManager;
6 import android.app.FragmentTransaction;
7 import android.view.Menu;
8
9 public class MainActivity extends Activity {
10
11 @Override
12 protected void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState);
14 setContentView(R.layout.activity_main);
15 MyListFragment myfragment = new MyListFragment();
16 //创建管理者对象
17 FragmentManager manager = getFragmentManager();
18 //创建事务对象
19 FragmentTransaction action = manager.beginTransaction();
20 //添加
21 action.add(R.id.view_listfragment, myfragment);
22 //提交事务
23 action.commit();
24 }
25
26 }
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:paddingBottom="@dimen/activity_vertical_margin"
6 android:paddingLeft="@dimen/activity_horizontal_margin"
7 android:paddingRight="@dimen/activity_horizontal_margin"
8 android:paddingTop="@dimen/activity_vertical_margin"
9 tools:context=".MainActivity" >
10
11 <fragment
12 android:layout_width="match_parent"
13 android:layout_height="match_parent"
14 android:id="@+id/view_listfragment"
15 android:name="com.xqx.listviewfragment.MyListFragment"
16 />
17
18 </RelativeLayout>
1 package com.xqx.listviewfragment;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import android.app.ListFragment;
7 import android.os.Bundle;
8 import android.view.View;
9 import android.widget.ArrayAdapter;
10 import android.widget.ListView;
11 import android.widget.Toast;
12
13 public class MyListFragment extends ListFragment{
14 private List<String> list; //适配器的数据源
15 private ArrayAdapter adapter; //ListView的适配器
16
17 @Override
18 public void onCreate(Bundle savedInstanceState) {
19 // TODO Auto-generated method stub
20 super.onCreate(savedInstanceState);
21 //给数据源添加数据
22 list = new ArrayList<String>();
23 list.add("第一条数据");
24 list.add("第二条数据");
25 list.add("第三条数据");
26 list.add("第四条数据");
27 adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,list);
28
29 }
30
31 //设置适配器 必须放在onCreateView之后,因为在onCreateView初始化视图
32 @Override
33 public void onActivityCreated(Bundle savedInstanceState) {
34 // TODO Auto-generated method stub
35 super.onActivityCreated(savedInstanceState);
36 //给ListView设置适配器
37 setListAdapter(adapter);
38 }
39
40 @Override
41 public void onListItemClick(ListView l, View v, int position, long id) {
42 // TODO Auto-generated method stub
43 super.onListItemClick(l, v, position, id);
44 Toast.makeText(getActivity(), "点击了"+getListAdapter().getItem(position).toString(), 1).show();
45 }
46 }
相关知识: