Android ListActivity学习

原创 2016年08月31日 12:08:56

    An activity that displays a list of items by binding to a data source such as an array or Cursor, and exposes event handlers when the user selects an item.ListActivity hosts a ListView object that can be bound to different data sources, typically either an array or a Cursor holding query results.
ListActivity 以列表的形式显示绑定的数据,数据来自数组或者是Cursor,同时提供一些用户选择某个item的处理函数,ListActivity 拥有一个ListView对象,这个对象可以绑定不同的数据源,典型的就是数组或者Cursor。它本身继承于Activity,所以很多Activity中的方法它都能用。

新建一个工程,继承ListActivity

点击(此处)折叠或打开

  1. public class ListAyActivity extends ListActivity {
  2.     @Override
  3.     protected void onCreate(Bundle savedInstanceState) {
  4.         super.onCreate(savedInstanceState);
  5.         List<Map<String, Object>> items = getDate();
  6.         setContentView(R.layout.activity_list_ay);

  7.         SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.listay,
  8.                 new String[] {"title" }, new int[] {android.R.id.text1 });
  9.         setListAdapter(adapter);
  10.     }
在onCreate 的时候,使用SimpleAdapter绑定数据,根据需要,可以绑定不同的Adapter ,这里使用SimpleAdapter,在界面上显示文字,实现一个查询分享功能的列表,如微博 微信,当我们点击列表的时候,弹出分享界面。
SimpleAdapter构造函数:  public SimpleAdapter(Context context, List<? extends Map> data, int resource, String[] from, int[] to) ,构造函数的参数之间有一定的关系,data中的数据类型为Map>,Map>中的String 和String[] from对应,是要显示的内容在代码中是 title 的value ,  int[] to 参数标示要显示到哪里去,代码中是显示到android.R.id.text1。看一下显示数据的构造:

点击(此处)折叠或打开

  1. private List<Map<String, Object>> getDate() {
  2.         List<Map<String, Object>> myData = new ArrayList<Map<String, Object>>();

  3.         Intent mainIntent = new Intent(Intent.ACTION_SEND, null);
  4.         mainIntent.setType("text/plain");
  5.         mainIntent.putExtra(Intent.EXTRA_SUBJECT, "Shared");

  6.         PackageManager pm = getPackageManager();
  7.         List<ResolveInfo> lists = pm.queryIntentActivities(mainIntent, 0);

  8.         for (ResolveInfo list : lists) {
  9.             Intent intent = new Intent().setClassName(
  10.                     list.activityInfo.applicationInfo.packageName,
  11.                     list.activityInfo.name);
  12.             Map<String, Object> temp = new HashMap<String, Object>();

  13.             temp.put("title", list.loadLabel(pm).toString());
  14.             temp.put("icon", list.getIconResource());
  15.             temp.put("intent", intent);

  16.             myData.add(temp);
  17.         }
数据的构造和SimpleAdapter的参数匹配,就是查询设备中的有分享功能的APK,然后读出loadLabel。在数据中加入temp.put("title", list.loadLabel(pm).toString()); 同时加入了temp.put("intent", intent);这个在点击的时候使用intent 弹出分享的界面。
再看一下  int resource 这个参数,代表一个布局文件,这个参数和 data  和 int[] to也要匹配, int[] to就是 resource 中的一个部件。明白了这个几个参数之间的关系,构造相应的数据即可。R.layout.listay的布局:里面只有一个android:id="@android:id/text1",这就是每个列表的布局。

点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="wrap_content"
  5.     android:orientation="horizontal" >

  6.     <TextView
  7.         android:id="@android:id/text1"
  8.         android:layout_width="wrap_content"
  9.         android:layout_height="wrap_content"
  10.         android:gravity="center_vertical"
  11.         android:minHeight="?android:attr/listPreferredItemHeightSmall"
  12.         android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
  13.         android:paddingStart="?android:attr/listPreferredItemPaddingStart"
  14.         android:textAppearance="?android:attr/textAppearanceListItemSmall" />

  15. </LinearLayout>

Screen Layout

ListActivity has a default layout that consists of a single, full-screen list in the center of the screen. However, if you desire, you can customize the screen layout by setting your own view layout with setContentView() in onCreate(). To do this, your own view MUST contain a ListView object with the id "@android:id/list" (or list if it's in code)

ListActivity 有一个默认的全屏布局。但是也可以定制,在onCreate 的时候setContentView,但是这个view 必须有一个ID为:@android:id/list  ListView。看一下activity_list_ay.xml:

点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.          android:orientation="vertical"
  4.          android:layout_width="match_parent"
  5.          android:layout_height="match_parent"
  6.          android:paddingLeft="8dp"
  7.          android:paddingRight="8dp">


  8.      <ListView android:id="@android:id/list"
  9.                android:layout_width="match_parent"
  10.                android:layout_height="match_parent"
  11.                android:background="#00FF00"
  12.                android:layout_weight="1"
  13.                android:drawSelectorOnTop="false"/>

  14.      <TextView android:id="@android:id/empty"
  15.                android:layout_width="match_parent"
  16.                android:layout_height="match_parent"
  17.                android:background="#FF0000"
  18.                android:text="No data"/>
  19.  </LinearLayout>

线性布局中包含了两个view, <ListView android:id="@android:id/list" 和 <TextView android:id="@android:id/empty"
ListView ID使用了android 的list。TextView ID为:android:id="@android:id/empty",这个id/empty有一个特殊的地方,当ListView中有数据的时候显示数据,没有数据的时候显示 TextView。看一下效果:








<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(748) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
版权声明:本文为博主原创文章,转载请注明出处。

[Androidstudio]的坑之继承ListActivity

想要继承ListActivity??? 你可要想好了啊!! !!!布局文件中必须有一个ListView,id必须是"@id/android:list"!!! 在Android ListActivity...
  • guojieaix
  • guojieaix
  • 2016年01月07日 18:26
  • 1579

安卓-ListActivity的使用

ListActivity可以理解为是ListView和Activity的结合。主要用来显示列表数据。显示数据需要设置适配器。Adapter常用的有ArrayAdapter,SimpleAdapter和...
  • wwt831208
  • wwt831208
  • 2017年02月03日 10:07
  • 665

Android - ListActivity 单击事件的响应

ListView 是Android比较常用的控件。 在ApiDemo中有相关的使用方法,但是在DEMO中并没有提到如何响应它的单击操作。 在Android中有两种单击: 1、短按单击。 2、长...
  • nieweiking
  • nieweiking
  • 2014年07月11日 11:53
  • 1113

通过继承ListActivity实现列表

如果你的Activity 中只需要显示一个列表,那么就可以通过继承ListActivity 的方式来实现: arrays.xml 情景模式 主题模式...
  • jyDave
  • jyDave
  • 2015年11月12日 13:04
  • 588

Activity中与ListActivity中使用listview区别

一.Activity中与ListActivity中使用listview区别(本身没多大区别,只是ListActivity在listview的显示上做了一些优化) Activity中使用Listvie...
  • fjseryi
  • fjseryi
  • 2013年10月08日 13:31
  • 899

Android之ListActivity(一):布局与数据绑定

Android中的列表,当然也可以用ListView来完成所需要的功能,用法是一样的。 废话不说,来关键的。 LiveActivity本身继承了关于List操作的众多接口,我们可以方便的重写这些操...
  • imxiangzi
  • imxiangzi
  • 2016年05月27日 17:38
  • 940

android studio开发教程 ListActivity的2种使用方法:系统默认布局和自己定义布局

看了视频和百度的资料,自己摸索了下。 第一种:系统默认布局 public class MainActivity extends ListActivity { @Override ...
  • lua_denis_2014
  • lua_denis_2014
  • 2015年02月04日 02:18
  • 1299

ListActivity 使用方法详解

原文:android中 ListActivity讲解
  • ymangu
  • ymangu
  • 2014年09月30日 13:46
  • 3024

Activity子类ListActivity的使用

http://www.cnblogs.com/tt_mc/archive/2010/03/31/1701369.html ListActivity的使用 第一种情况,就是exten...
  • zy1235678
  • zy1235678
  • 2014年06月26日 11:24
  • 2612

Android练习-----列表视图(ListView)(通过继承ListActivity实现列表视图)

Android练习-----列表视图(ListView)(通过继承ListActivity实现列表视图)
  • sinat_35158586
  • sinat_35158586
  • 2016年10月19日 00:49
  • 352
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android ListActivity学习
举报原因:
原因补充:

(最多只允许输入30个字)