Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 659|回复: 0

Android---UI篇---ListView之SampleAdapter(列表)---1-  Androi

[复制链接]

该用户从未签到

发表于 2011-10-24 15:00:49 | 显示全部楼层 |阅读模式
ListView是列表组件,这个ListView是我接触的目前所有Android UI控件中最为麻烦的控件,之所以麻烦就是因为它的各种的适配器Adapter特别麻烦,Adapter的组织结构图如下



在ListView中,以内不同的Adapter不同,所以也会有不同的效果,其中比较常用的是SampleAdapter,SimpleCursorAdapter,ArrayAdapter,BaseAdapter等,
万事开头难,还是从最简单的SimpleAdapter说起,以后再一点点学习

simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)等等。下面的代码都直接继承了ListActivity,ListActivity和普通的Activity没有太大的差别,不同就是对显示ListView做了许多优化,方面显示而已。

先看看一个实例,是由SimpleAdapter与ListView绑定后的一个小例子。
ListViewone.java文件

Java代码
package org.hualang.simpleadapter;



import java.util.ArrayList;

import java.util.HashMap;



import android.app.ListActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.Toast;



public class ListViewone extends ListActivity {

    /** Called when the activity is first created. */

        private Toast toast;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        ArrayList<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();

        HashMap<String,String> map1=new HashMap<String,String>();

        HashMap<String,String> map2=new HashMap<String,String>();

        HashMap<String,String> map3=new HashMap<String,String>();

        map1.put("name", "凝墨");

        map1.put("phone", "13699452790");

        map2.put("name", "小棕");

        map2.put("phone", "15827980910");

        map3.put("name", "花郎");

        map3.put("phone", "18678091166");

        

        list.add(map1);

        list.add(map2);

        list.add(map3);

        SimpleAdapter listAdapter=new SimpleAdapter(this,

                        list,

                        R.layout.info,

                        new String[] {"name","phone"},

                        new int[] {R.id.name,R.id.phone});

        setListAdapter(listAdapter);

    }

    protected void onListItemClick(ListView l,View v,int position,long id)

    {

            super.onListItemClick(l,v,position,id);

            if(l.getItemIdAtPosition(position)==0)

            {

                    toast.makeText(getApplicationContext(), "我是凝墨", Toast.LENGTH_SHORT).show();

            }else if(l.getItemIdAtPosition(position)==1)

            {

                    toast.makeText(getApplicationContext(), "我是小棕", Toast.LENGTH_SHORT).show();

            }else if(l.getItemIdAtPosition(position)==2)

            {

                    toast.makeText(getApplicationContext(), "我是花郎", Toast.LENGTH_SHORT).show();

            }

            

    }

   

}
复制代码

main.xml文件

Java代码
<?xml version="1.0" encoding="utf-8"?>

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

    androidrientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

    <LinearLayout

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:id="@+id/linearlayout"

            android:orientation="vertical"

    >

            <ListView

                    android:id="@id/android:list"

                    android:layout_width="fill_parent"

                    android:layout_height="wrap_content"

                    android:drawSelectorOnTop="false"

                    android:scrollbars="vertical"

            />

    </LinearLayout>

</LinearLayout>
复制代码

info.xml

Java代码
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

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

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:paddingLeft="10dip"

  android:paddingRight="10dip"

  android:paddingTop="1dip"

  android:paddingBottom="1dip"

  >

  <TextView

          android:id="@+id/name"

          android:layout_width="180dip"

          android:layout_height="30dip"

          android:textSize="10pt"

          android:singleLine="true"

  />

  <TextView

          android:id="@+id/phone"

          android:layout_width="fill_parent"

          android:layout_height="fill_parent"

          android:gravity="right"

          android:textSize="10pt"

  />

</LinearLayout>
复制代码

使用simpleAdapter的数据用一般都是HashMap构成的List,list的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应id的组件上。因为系统没有对应的布局文件可用,我们可以自己定义一个布局info.xml。下面做适配,new一个SimpleAdapter参数一次是:this,布局文件(info.xml)。布局文件的组件name,phone。布局文件的各组件分别映射到HashMap的各元素上,完成适配。

运行结果如下:




当点击了第一行





实例2:显示一个带图片的ListView,使用适配器SampleAdapter
ListViewone.java

Java代码
package org.hualang.simpleadapter;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;



import android.app.ListActivity;

import android.os.Bundle;

import android.widget.SimpleAdapter;

public class ListViewone extends ListActivity {



        @Override

        public void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);



                SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.info,

                                new String[]{"name","phone","img"},

                                new int[]{R.id.name,R.id.phone,R.id.img});

                setListAdapter(adapter);

        }



        private List<Map<String, Object>> getData() {

                List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();



                Map<String, Object> map = new HashMap<String, Object>();

                map.put("name", "凝墨");

                map.put("phone", "13699782346");

                map.put("img", R.drawable.pic1);

                list.add(map);



                map = new HashMap<String, Object>();

                map.put("name", "小棕");

                map.put("phone", "15899034671");

                map.put("img", R.drawable.pic2);

                list.add(map);



                map = new HashMap<String, Object>();

                map.put("name", "花郎");

                map.put("phone", "18677656526");

                map.put("img", R.drawable.pic3);

                list.add(map);

               

                return list;

        }

}
复制代码

info.xml

Java代码
<?xml version="1.0" encoding="utf-8"?>

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

        android:orientation="horizontal" android:layout_width="fill_parent"

        android:layout_height="fill_parent">

        <ImageView android:id="@+id/img"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_margin="5px"/>

        <LinearLayout android:orientation="vertical"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content">



                <TextView android:id="@+id/name"

                        android:layout_width="wrap_content"

                        android:layout_height="wrap_content"

                        android:textColor="#FFFFFFFF"

                        android:textSize="22px" />

                <TextView android:id="@+id/phone"

                        android:layout_width="wrap_content"

                        android:layout_height="wrap_content"

                        android:textColor="#FFFFFFFF"

                        android:textSize="13px" />

        </LinearLayout>

</LinearLayout>
复制代码

这里,就不做事件处理了,运行结果如下:

回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 15:00:54 | 显示全部楼层

Re:Android---UI

很好很好很好很好很好很好很好
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 14:32 , Processed in 0.309469 second(s), 36 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表