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=""
android:targetSdkVersion="" />
如果导入的包是 import android.support.v4.app.
则清单文件不需要改动
package com.xqx.listviewfragment; import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.view.Menu; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyListFragment myfragment = new MyListFragment();
//创建管理者对象
FragmentManager manager = getFragmentManager();
//创建事务对象
FragmentTransaction action = manager.beginTransaction();
//添加
action.add(R.id.view_listfragment, myfragment);
//提交事务
action.commit();
} }
MainActivity.class
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/view_listfragment"
android:name="com.xqx.listviewfragment.MyListFragment"
/> </RelativeLayout>
layout_main.xml
package com.xqx.listviewfragment; import java.util.ArrayList;
import java.util.List; import android.app.ListFragment;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast; public class MyListFragment extends ListFragment{
private List<String> list; //适配器的数据源
private ArrayAdapter adapter; //ListView的适配器 @Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//给数据源添加数据
list = new ArrayList<String>();
list.add("第一条数据");
list.add("第二条数据");
list.add("第三条数据");
list.add("第四条数据");
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,list); } //设置适配器 必须放在onCreateView之后,因为在onCreateView初始化视图
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
//给ListView设置适配器
setListAdapter(adapter);
} @Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Toast.makeText(getActivity(), "点击了"+getListAdapter().getItem(position).toString(), ).show();
}
}
MyListFragment.class
相关知识: