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> 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) |
相关热门文章
给主人留下些什么吧!~~
评论热议
版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

SimpleAdapter和Baseadapter填充listActivity-android学习之旅()

简介SimpleAdapter的功能是能够为AbsListView提供复杂的数据,需要构造ListView代码示例package peng.liu.testview;import android.ap...

Android学习--ListActivity的简单使用以及监听事件

Android中ListActivity的一些简单用法以及监听事件重点内容这里写代码片

Android列表视图ListView和ListActivity-android学习之旅(二十四)

ListView简介ListView是android中常用的一种控件,创建ListView有两种方式: 1.在xml中使用ListView控件创建。 2.使用activity继承ListActiv...

Android关于ListView的总结--使用ListActivity

ListActivity是一个专门显示ListView的Activity类,它内置了ListView对象,实现数据源的绑定与显示,数据源通常会是一个array或者一个拥有查询结果的cursor. 只要...

android 从activity用intent跳转到listactivity并在其中用simpleadapter在listview中显示数据列

package="com.example.test1"     android:versionCode="1"     android:versionName="1.0" >     ...

Android之ListActivity:布局与数据绑定

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

Android中Activity中使用ListView与ListActivity中使用ListView的区别与联系

Android中Activity与ListActivity使用ListView的区别与联系:1. Activity的使用: (1).概念: 每一个activity对应...

ListActivity ListView的id为什么要用@android:id/list

今天用到ListActivity这个Activity的子类,发现了一个问题,就是以前我们在学ListActivity的时候,如果用到了ListActivity,我们用自己定义的布局的时候,ListVi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android ListActivity学习
举报原因:
原因补充:

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