ListFragment继承于Fragment。因此它具有Fragment的特性,能够作为activity中的一部分,目的也是为了使页面设计更加灵活。
相比Fragment,ListFragment的内容是以列表(List)的形式显示的。ListFragment的布局默认包含一个ListVIEw。因此,在ListFragment对应的布局文件中,必须指定一个 androID:ID 为 “@androID:ID/List” 的ListVIEw控件!
ListFragment基础使用
下面介绍在Activity中显示ListFragment的步骤。
1. Activity对应的代码
public class FragmentTest extends Activity { @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); } }
2. Activity对应的布局
<linearLayout 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:orIEntation="horizontal" > <fragment androID:name="com.skw.fragmenttest.MyListFragment" androID:ID="@+ID/myfragment" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" /></linearLayout>
说明:该Activity的布局中只包行了一个Fragment。下面看看MyListFragment的内容。
3. MyListFragment的内容
public class MyListFragment extends ListFragment { private static final String TAG = "##MyListFragment##"; private ListVIEw selfList; String[] citIEs = { "Shenzhen","Beijing","Shanghai","Guangzhou","Wuhan","Tianjing","Changsha","Xi'an","Chongqing","Guilin",}; @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) { Log.d(TAG,"onCreateVIEw"); return inflater.inflate(R.layout.List_fragment,container,false); } @OverrIDe public voID onCreate(Bundle savedInstanceState) { Log.d(TAG,"onCreate"); super.onCreate(savedInstanceState); // 设置ListFragment默认的ListVIEw,即@ID/androID:List this.setlistadapter(new ArrayAdapter<String>(getActivity(),androID.R.layout.simple_List_item_1,citIEs)); } public voID onListItemClick(ListVIEw parent,VIEw v,int position,long ID) { Log.d(TAG,"onListItemClick"); Toast.makeText(getActivity(),"You have selected " + citIEs[position],Toast.LENGTH_SHORT).show(); } }
说明:MyListFragment是自定义的ListFragment。它使用了List_fragment.xml作为布局,并通过androID.R.layout.simple_List_item_1显示ListVIEw中的每一项。
4. List_fragment.xml的内容
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" > <!-- ListFragment对应的androID:ID值固定为"@ID/androID:List" --> <ListVIEw androID:ID="@ID/androID:List" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:drawSelectorOntop="false" /></linearLayout>
"Activity的布局以及代码"和前面一样,这里就不再重复说明。
5. MyListFragment的内容
public class MyListFragment extends ListFragment { private static final String TAG = "##MyListFragment##"; private ListVIEw selfList; @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater,false); } @OverrIDe public voID onCreate(Bundle savedInstanceState) { final String[] from = new String[] {"Title","info"}; final int[] to = new int[] {R.ID.text1,R.ID.text2}; Log.d(TAG,"onCreate"); super.onCreate(savedInstanceState); // 建立SimpleAdapter,将from和to对应起来 SimpleAdapter adapter = new SimpleAdapter( this.getActivity(),getSimpleData(),R.layout.item,from,to); this.setlistadapter(adapter); } public voID onListItemClick(ListVIEw parent,"You have selected " + position,Toast.LENGTH_SHORT).show(); } private List<Map<String,Object>> getSimpleData() { List<Map<String,Object>> List = new ArrayList<Map<String,Object>>(); Map<String,Object> map = new HashMap<String,Object>(); map.put("Title","Ferris wheel"); map.put("info","Suzhou Ferris wheel"); List.add(map); map = new HashMap<String,"Flower"); map.put("info","Roser"); List.add(map); map = new HashMap<String,"disk"); map.put("info","Song disk"); List.add(map); return List; }}
说明:MyListFragment使用了R.layout.List_fragment作为布局,并且对于ListVIEw中的每一项都使用了R.layout.item作为布局。
6. List_fragment.xml的内容
<!-- ListFragment对应的androID:ID值固定为"@ID/androID:List" -->
<ListVIEw
androID:ID="@ID/androID:List"
androID:layout_wIDth="match_parent"
androID:layout_height="match_parent"
androID:drawSelectorOntop="false"
/>
7. item.xml的内容
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" > <TextVIEw androID:ID="@+ID/text1" androID:textSize="12sp" androID:textStyle="bold" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content"/> <TextVIEw androID:ID="@+ID/text2" androID:textSize="24sp" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content"/></linearLayout>
ListFragment实例
应用实例说明:建立一个activity,包括2个ListFragment。第1个ListFragment采用中ListVIEw每一行的内容通过androID自带的androID.R.layout.simple_List_item_1布局来显示;第2个ListFragment每一行的内容通过自定义的layout文件来显示,每一行显示两个文本。
activity对应的layout文件代码:
<linearLayout 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:orIEntation="horizontal" > <fragment androID:name="com.skywang.app.ListFragmentImpl" androID:ID="@+ID/fragment1" androID:layout_weight="1" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" /> <fragment androID:name="com.skywang.app.ListFragmentSelf" androID:ID="@+ID/fragment2" androID:layout_weight="1" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" /></linearLayout>
说明:
(01) 该layout布局包含两个fragment。
activity的代码:
package com.skywang.app;import androID.os.Bundle;import androID.app.Activity;import androID.app.FragmentManager;import androID.app.FragmentTransaction;import androID.vIEw.Menu;public class ListFragmentTest extends Activity { @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.List_fragment_test); }}
说明:
(01) 在 onCreateVIEw()中,调用List_fragment_impl作为该ListFragment的布局文件。
(02) 在 onCreate()中,通过setlistadapter() 设置androID.R.layout.simple_List_item_1为ListVIEw每一行的布局文件,设置citIEs为其中数据的每一项内容。
ListFragmentImpl.java的代码:
package com.skywang.app;import androID.app.ListFragment;import androID.Widget.ListVIEw; import androID.os.Bundle;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.ArrayAdapter;import androID.util.Log;import androID.Widget.Toast;import androID.Widget.SimpleAdapter;import java.util.Map;import java.util.HashMap;import java.util.List;import java.util.ArrayList;public class ListFragmentImpl extends ListFragment{ private static final String TAG = "ListFragmentImpl"; private ListVIEw selfList; String[] citIEs = { "Shenzhen","onCreateVIEw"); return inflater.inflate(R.layout.List_fragment_impl,false); } @OverrIDe public voID onCreate(Bundle savedInstanceState) { Log.d(TAG,citIEs)); } public voID onListItemClick(ListVIEw parent,Toast.LENGTH_SHORT).show(); } }
List_fragment_impl.xml的内容:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" > <!-- ListFragment对应的androID:ID值固定为"@ID/androID:List" --> <ListVIEw androID:ID="@ID/androID:List" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:drawSelectorOntop="false" /> </linearLayout>
ListFragmentSelf.java的代码:
package com.skywang.app;
import androID.app.ListFragment;import androID.Widget.ListVIEw; import androID.os.Bundle;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.ArrayAdapter;import androID.util.Log;import androID.Widget.Toast;import androID.Widget.SimpleAdapter;import java.util.Map;import java.util.HashMap;import java.util.List;import java.util.ArrayList;public class ListFragmentSelf extends ListFragment{ private static final String TAG = "ListFragmentImpl"; private ListVIEw selfList; @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater,"onCreateVIEw"); return inflater.inflate(R.layout.List_fragment_self,false); } @OverrIDe public voID onCreate(Bundle savedInstanceState) { final String[] from = new String[] {"Title",R.ID.text2}; Log.d(TAG,R.layout.two_textvIEw,to); this.setlistadapter(adapter); } public voID onListItemClick(ListVIEw parent,Toast.LENGTH_SHORT).show(); } private List<Map<String,Object>>(); Map<String,"Song disk"); List.add(map); return List; }}
说明:
(01) 在 onCreateVIEw()中,调用List_fragment_self作为该ListFragment的布局文件。
(02) 在 onCreate()中,通过setlistadapter() 设置R.layout.two_textvIEw为ListVIEw每一行的布局文件。
List_fragment_self.xml的内容:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" > <!-- ListFragment对应的androID:ID值固定为"@ID/androID:List" --> <ListVIEw androID:ID="@ID/androID:List" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:drawSelectorOntop="false" /> </linearLayout>
two_textvIEw.xml的内容:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" > <TextVIEw androID:ID="@+ID/text1" androID:textSize="12sp" androID:textStyle="bold" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content"/> <TextVIEw androID:ID="@+ID/text2" androID:textSize="24sp" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content"/> </linearLayout>
效果图:
总结以上是内存溢出为你收集整理的Android App中使用ListFragment的实例教程全部内容,希望文章能够帮你解决Android App中使用ListFragment的实例教程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)