热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

AndroidApp中使用ListFragment的实例教程

这篇文章主要介绍了AndroidApp中使用ListFragment的实例教程,ListFragment的内容是以列表(list)的形式显示的Fragment,需要的朋友可以参考下

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对应的布局



 



说明:该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(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的内容

<&#63;xml version="1.0" encoding="utf-8"&#63;>


 
 



"Activity的布局以及代码"和前面一样,这里就不再重复说明。

5. MyListFragment的内容

public class MyListFragment extends ListFragment {
 private static final String TAG = "##MyListFragment##";

 private ListView selfList;

 @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) {
  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, View v, 
   int position, long id) {
  Log.d(TAG, "onListItemClick");
  Toast.makeText(getActivity(), 
    "You have selected " + position,
    Toast.LENGTH_SHORT).show();
 }

 private List> getSimpleData() {
  List> list = new ArrayList>();

  Map map = new HashMap();
  map.put("title", "Ferris wheel");
  map.put("info", "Suzhou Ferris wheel");
  list.add(map);

  map = new HashMap();
  map.put("title", "Flower");
  map.put("info", "Roser");
  list.add(map);

  map = new HashMap();
  map.put("title", "Disk");
  map.put("info", "Song Disk");
  list.add(map);

  return list;
 }
}

说明:MyListFragment使用了R.layout.list_fragment作为布局,并且对于ListView中的每一项都使用了R.layout.item作为布局。

6. list_fragment.xml的内容


    android:id="@id/android:list"
    android:layout_
    android:layout_
    android:drawSelectorOnTop="false"
    />

7. item.xml的内容

<&#63;xml version="1.0" encoding="utf-8"&#63;>


 

 



ListFragment实例
应用实例说明:建立一个activity,包括2个ListFragment。第1个ListFragment采用中ListView每一行的内容通过android自带的android.R.layout.simple_list_item_1布局来显示;第2个ListFragment每一行的内容通过自定义的layout文件来显示,每一行显示两个文本。

activity对应的layout文件代码:



 

 



说明:
(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",
   "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_impl, container, false);
 }
 

 @Override
 public void onCreate(Bundle savedInstanceState) {
  Log.d(TAG, "onCreate");
  super.onCreate(savedInstanceState);
  // 设置ListFragment默认的ListView,即@id/android:list
  this.setListAdapter(new ArrayAdapter(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();
 } 
}

list_fragment_impl.xml的内容:

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 
 
 


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, ViewGroup container, 
   Bundle savedInstanceState) {
  Log.d(TAG, "onCreateView");
  return inflater.inflate(R.layout.list_fragment_self, container, 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.two_textview, from, to);
  this.setListAdapter(adapter);
 }
 
 public void onListItemClick(ListView parent, View v, 
   int position, long id) {
  Log.d(TAG, "onListItemClick");
  Toast.makeText(getActivity(), 
    "You have selected " + position,
    Toast.LENGTH_SHORT).show();
 }
 
 private List> getSimpleData() {
  List> list = new ArrayList>();
  
  Map map = new HashMap();
  map.put("title", "Ferris wheel");
  map.put("info", "Suzhou Ferris wheel");
  list.add(map);

  map = new HashMap();
  map.put("title", "Flower");
  map.put("info", "Roser");
  list.add(map);

  map = new HashMap();
  map.put("title", "Disk");
  map.put("info", "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的内容:

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 
 
 


two_textview.xml的内容:

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 

 
  

效果图:

2016511110549079.png (400×683)


推荐阅读
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 本文详细介绍了如何使用Spring Boot进行高效开发,涵盖了配置、实例化容器以及核心注解的使用方法。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 本文介绍如何在 Unity 的 XML 配置文件中,将参数传递给自定义生命周期管理器的构造函数。我们将详细探讨 CustomLifetimeManager 类的实现及其配置方法。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ... [详细]
author-avatar
麦豪小仙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有