Android App中使用ListFragment的实例教程

Android App中使用ListFragment的实例教程,第1张

概述ListFragment继承于Fragment。因此它具有Fragment的特性,能够作为activity中的一部分,目的也是为了使页面设计更加灵活。

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的实例教程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1141883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存