Android详细教程(基础篇):八、View组件高级篇:ListView详解

7.2. ListView (列表视图)

与滚动视图(ScrollView)类似的还有一种列表组件(ListView),可以将多个组件加入到ListView之中,以达到组件的

滚动显示效果,ListView组件本身也有对应的ListView类支持,可以通过操作ListView类以完成对此组件的操作。

 列表的显示需要三个元素:

1.ListVeiw :用来展示列表的View,可以写在配置里,也可以在Activity程序中new一个

2.适配器 :用来把数据映射到ListView上的中介。

3.数据 :具体的将被映射的字符串,图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。

SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表

的形式展示出来。

ListView类的继承结构如下:

java.lang.Object

   

android.view.View

 

   

android.view.ViewGroup

 

 

   

android.widget.AdapterView<T extends android.widget.Adapter>

 

 

 

   

android.widget.AbsListView

 

 

 

 

   

android.widget.ListView

 

ListView的常用方法:

ListView(Context context)  创建ListView类的实例化对象

public void setAdapter (ListAdapter adapter)  设置显示的数据

public ListAdapter getAdapter ()  返回ListAdapter

public void setOnItemSelectedListener (AdapterView.OnItemSelectedListener listener) 当选项选中时触发此事件

 

ListAdapter的已知子类:

Known Indirect Subclasses

ArrayAdapter<T>, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, WrapperListAdapter

 

7.2.1. 使用ArrayAdapter来设置ListView组件中的显示数据

  • ArrayAdapter简单介绍

java.lang.Object

   

android.widget.BaseAdapter

 

   

android.widget.ArrayAdapter<T>

 

 

public ArrayAdapter (Context context, int textViewResourceId, T[] objects)

context,就是Activity; textViewResourceId,布局方式;存放数据的数组

  • 程序演示:

配置:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/hello"

    />

</LinearLayout>

程序:

package com.makyan.demo;

import android.app.Activity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.ListView;

public class ArrayAdapterActivity extends Activity {

private String data[] = { "杨雄工作科技", "www.makyan.cn", "讲师:杨雄进",

               "中国高校讲师联盟", "www.makyan.com", "咨询邮箱:makyan_sophia@sina.com",

               "客户服务:makyan_sophia@sina.com ", "客户电话:085147856987", "杨雄社区:bbs.makyan.cn",

               "我家农产品" }; // 准备出若干个信息而这些信息以后将通过程序加入到内嵌的线性布局文件之中

            private ListView listView = null; // 定义ListView组件

            @Override

            public void onCreate(Bundle savedInstanceState) {

                       super.onCreate(savedInstanceState);

                       listView = new ListView(this); // 实例化组件

                       listView.setAdapter(new ArrayAdapter<String>(this,

                                               android.R.layout.simple_list_item_1, data)); // 为ListView组件设置内容

                       super.setContentView(listView) ;  // 显示组件

       listView.setOnItemClickListener(new OnItemClickListenerImpl());

            }

            private class OnItemClickListenerImpl implements OnItemClickListener{

                       @Override

                       public void onItemClick(AdapterView<?> adapter, View arg1, int position,long id) {

                                    if(id<-1) { 

                                                // 点击的是headerView或者footerView 

                                                return; 

                                    } 

                                   int realPosition=(int)id; 

                                   // 响应代码 

                                   Toast.makeText(ArrayAdapterActivity.this, "您喜欢的是:" + adapter.getItemAtPosition(realPosition), position).show();

                       }

            }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值