ListFragment的使用
ListFragment继承了Fragment,顾名思义,ListFragment是一种特殊的Fragment,它包含了一个ListView,在ListView里面显示数据。
1. MainActivity
Java类文件:
- package com.example.hzhi.fragmentdemo;
- import android.app.Activity;
- import android.os.Bundle;
- import android.app.FragmentManager;
- import android.app.FragmentTransaction;
- public class MainActivity extends Activity {
- private FragmentManager manager;
- private FragmentTransaction transaction;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- manager = getFragmentManager();
- transaction = manager.beginTransaction();
- ListFragmentImpl frgImpl = new ListFragmentImpl();
- ListFragmentSelf frgSelf = new ListFragmentSelf();
- transaction.add(R.id.fragment1, frgImpl, "frgImpl");
- transaction.add(R.id.fragment2, frgSelf, "frgSelf");
- transaction.commit();
- }
- }
xml布局文件:
- <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" >
- <LinearLayout
- android:id="@+id/fragment1"
- android:layout_weight="1"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"/>
- <LinearLayout
- android:id="@+id/fragment2"
- android:layout_weight="1"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"/>
- </LinearLayout>
可见MainActivity是比较简单的,在布局里面放了左右两个ListFragment。
2. ListFragment
2.1 左边的ListFragment
Java类文件:
- package com.example.hzhi.fragmentdemo;
- 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[] classes = {
- "计算机网络",
- "操作系统",
- "C语言",
- "Java",
- "数据库原理",
- "移动开发",
- };
- @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<String>(getActivity(),
- android.R.layout.simple_list_item_1, classes));
- }
- public void onListItemClick(ListView parent, View v,
- int position, long id) {
- Log.d(TAG, "onListItemClick");
- // 找到ListFragmentSelf
- ListFragmentSelf listFragmentSelf = (ListFragmentSelf) getFragmentManager().
- findFragmentByTag("frgSelf");
- listFragmentSelf.flushData(position);
- }
- }
布局文件:
- <?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>
2.2 右边的ListFragment
Java类文件:
- package com.example.hzhi.fragmentdemo;
- 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.util.Log;
- 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;
- final String[] from = new String[] {"name", "title", "info", "picture"};
- final int[] to = new int[] {R.id.text0, R.id.text1, R.id.text2, R.id.picture};
- private String[] tname = new String[]{"计算机网络", "操作系统", "C语言", "Java", "数据库原理", "移动开发"};
- private String[] ttitle = new String[]{"张三", "李四", "王五", "Tom", "Mike", "Peter"};
- private String[] ttime = new String[]{"160", "50", "40", "200", "180", "150"};
- private int[] pic = new int[]{R.drawable.jsjwl, R.drawable.czxt, R.drawable.cyy,
- R.drawable.java, R.drawable.sjkyl, R.drawable.ydkf};
- @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) {
- Log.d(TAG, "onCreate");
- super.onCreate(savedInstanceState);
- flushData(0);
- }
- public void onListItemClick(ListView parent, View v,
- int position, long id) {
- Log.d(TAG, "onListItemClick");
- }
- public void flushData(int p){
- // 建立SimpleAdapter,将from和to对应起来
- SimpleAdapter adapter = new SimpleAdapter(
- this.getActivity(), getSimpleData(p),
- R.layout.list_item, from, to);
- this.setListAdapter(adapter);
- }
- private List<Map<String, Object>> getSimpleData(int p) {
- List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("title", "课程名称");
- map.put("info", tname[p]);
- list.add(map);
- map = new HashMap<String, Object>();
- map.put("title", "教师姓名");
- map.put("info", ttitle[p]);
- list.add(map);
- map = new HashMap<String, Object>();
- map.put("title", "学时");
- map.put("info", ttime[p]);
- list.add(map);
- map = new HashMap<String, Object>();
- map.put("title", "图片");
- map.put("picture", pic[p]);
- list.add(map);
- return list;
- }
- }
布局文件:
- <?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>
行布局文件:
- <?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/text0"
- android:textSize="12sp"
- android:textStyle="bold"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
- <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"/>
- <ImageView
- android:id="@+id/picture"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingLeft="10dp" />
- </LinearLayout>
最重要的方法是,当点击左边ListFragment的某一行时,取得改行的position,然后根据Tag找到右边的ListFragment,并调用flushData()方法,使右边的ListFragment刷新数据。
3. 运行结果
ListFragment的使用的更多相关文章
- ListFragment源码 (待分析)
/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Versi ...
- ListFragment创建及其生命周期
相同的ListFragment 带有一个无参构造 一个有参构造 在该Fragment所依附的Activity视图创建时被实例化一次 方法周期分别为1.无参构造2.onInflate3.onAttach ...
- Fragment中添加ListView而不使用ListFragment
最初的构想是,将Fragment和ViewPager结合起来, 然后突发奇想,在第一个Fragment里添加了ListView, 依照网上的建议,extends了ListFragment,接着各种报错 ...
- [Android]ListFragment.setEmptyText() 抛 java.lang.IllegalStateException
在ListFragment子类中直接调用setEmptyText(getString(R.string.msg_no_invited_parties)), 抛java.lang.IllegalStat ...
- Android系列之Fragment(四)----ListFragment的使用
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- ListFragment
ListFragment http://developer.android.com/reference/android/app/ListFragment.html extends Fragment C ...
- Android App组件之ListFragment -- 说明和示例
Android App组件之ListFragment -- 说明和示例 1 ListFragement介绍 ListFragment继承于Fragment.因此它具有Fragment的特性,能够作为a ...
- Android ListFragment实例Demo(自己定义适配器)
上一篇文章介绍了ListFragment,当中的ListView并没有自己定义适配器,实际上在实际开发中常会用到自己定义适配器,是实现更复杂的列表数据展示. 所以这篇文章添加了自己定义适配器.来进行L ...
- android,在fragment中使用listview,不使用listfragment
public class LeftFragment extends Fragment{ private ListView listView; @Override public View onCreat ...
随机推荐
- .NET同步与异步之相关背景知识(六)
在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...
- SHA-1算法
SHA-1.h #ifndef _SHA1_H #define _SHA1_H #include<iostream> using namespace std; //4个函数 #define ...
- mysql数据库主从同步
环境: Mater: CentOS7.1 5.5.52-MariaDB 192.168.108.133 Slave: CentOS7.1 5.5.52-MariaDB 192.168. ...
- Linux硬件IO的优化简介
Linux硬件IO的优化简介 首先简单介绍下有哪些硬件设备如下(由于硬件种类厂家等各种因素我就不在此多做介绍有兴趣的可以自行学习): 1.CPU:中央处理器,是计算机运算控制的核心部件之一,相当于人的 ...
- windows下的命令行工具babun
什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是 ...
- python selenium
https://segmentfault.com/a/1190000007249396?_ea=1293878
- 【原】npm 常用命令详解
今年上半年在学习gulp的使用,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令到自己博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块 ...
- 解除win7网络限速.
在电脑刚买或者系统重装了的时候,win7系统会默认限制20%的网络速度,限制了我们的上网速度,我们可以解决这个限制,让上网变得更快 下面是操作步骤 1.开始>运行 2.输入以下命令,然后确定 g ...
- Linux.NET学习手记(7)
前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序.而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战. 早在 ...
- 一步步学习javascript基础篇(7):BOM和DOM
一.什么是BOM.什么是DOM BOM即浏览器对象模型,主要用了访问一些和网页无关的浏览器功能.如:window.location.navigator.screen.history等对象. DOM即文 ...