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入门到精通教程
查看: 709|回复: 0

一,android开发经典实例系列-----ListView、GridView-  And

[复制链接]

该用户从未签到

发表于 2011-10-24 14:51:53 | 显示全部楼层 |阅读模式
1,ListView 是android开发中最常用的控件之一,一般构成列表包括三个元素,ListView:用来展示列表的视图、Adapter:数据与视图连接的桥梁、Data:具体的数据包括 字符串 图片 或者控件。
     适配器一般有以下几种类型
     ArrayAdapter:Android中最简单的一种适配器,专门用于列表控件。只显示一行数据。
     SimpleAdapter:此适配器有最好的扩充性,可以自定义出各种效果。经常使用静态数据填充列表。
     CursorAdapter:通过游标向列表提供数据。
     ResourceCursorAdapter:这个适配器扩展了CursorAdapter,知道如何从资源创建视图。
     SimpleCursorAdapter:这个适配器扩展了ResourceCursorAdapter,从游标中得列创建 TextView/ImageView视图。下面获取通讯录的示例:

Xml代码


<?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"

    android:background="@drawable/bg"

   

    >

           <ListView

           android:id="@+id/contacts_list"

           android:layout_width="fill_parent"

           android:layout_height="fill_parent"

        >

        </ListView>

</LinearLayout>
复制代码



java代码
package net.csdn.blog.androidtoast;



import java.util.ArrayList;

import java.util.HashMap;

import java.util.Map;



import android.app.Activity;

import android.database.Cursor;

import android.os.Bundle;

import android.provider.ContactsContract;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.Toast;



public class MainActivity extends Activity {

        

         ListView     mListView;

         ArrayList<Map<String, String>> listData;

            

    static final String NAME = "name";

        static final String NUMBER = "number";

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

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        getContacts();

    }



    /**

     * 获取联系人列表

     */

        private void getContacts() {

                mListView=(ListView) findViewById(R.id.contacts_list);

                listData = new ArrayList<Map<String, String>>();

                //获取数据库Cursor

                Cursor cur=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

                startManagingCursor(cur);

                while (cur.moveToNext()) {

          Map<String, String> mp = new HashMap<String, String>();

          long id = cur.getLong(cur.getColumnIndex("_id"));

                  Cursor pcur = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

                                          null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + Long.toString(id),

                                      null, null);

                          

                                    // 处理多个号码的情况

                           String phoneNumbers = "";

                           while (pcur.moveToNext()) {

                                       String strPhoneNumber = pcur.getString(pcur.getColumnIndex(

                                               ContactsContract.CommonDataKinds.Phone.NUMBER));

                                      phoneNumbers += strPhoneNumber + ":";

                                   }

                                   phoneNumbers += "\n";

                                   pcur.close();

                                   

                                   String name = cur.getString(cur.getColumnIndex("display_name"));

                                   mp.put(NAME, name);

                                   mp.put(NUMBER, phoneNumbers);

                                   listData.add(mp);

                                }

                 cur.close();

                 

                // 建立一个适配器去查询数据

        ListAdapter adapter = new SimpleAdapter(this, listData, android.R.layout.simple_list_item_2,

               new String[]{NAME, NUMBER},

               new int[] {android.R.id.text1, android.R.id.text2});

        mListView.setAdapter(adapter);

                //为listView添加事件监听

                mListView.setOnItemSelectedListener(new ListView.OnItemSelectedListener(){



                        @Override

                        public void onItemSelected(AdapterView<?> parent, View view,

                                        int position, long id) {

                                Toast.makeText(getApplicationContext(), "当前所在行为:"+Long.toString(parent.getSelectedItemId()+1), 1).show();

                        }



                        @Override

                        public void onNothingSelected(AdapterView<?> parent) {

                                // TODO Auto-generated method stub

                                

                        }

                        

                });

        }

}
复制代码


2,GridView 网格视图,用于显示多行多列。直接上示例:

Xml代码


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

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

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:background="@drawable/bg"

    >

        <GridView

                android:id="@+id/gridview"

                android:layout_width="fill_parent"

                android:layout_height="wrap_content"

                android:numColumns="3"/>

               

</LinearLayout>
复制代码



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



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

        android:orientation="vertical" android:layout_width="fill_parent"

        android:layout_height="fill_parent" android:scrollbars="vertical">

         <ImageView   

               android:layout_height="100dip"   

               android:id="@+id/ItemImage"   

               android:layout_width="80dip"

               android:src="@drawable/png1"

               android:layout_gravity="center_horizontal"/>

                 

         <TextView   

               android:layout_width="wrap_content"   

               android:layout_height="wrap_content"

               android:layout_gravity="center"  

               android:id="@+id/ItemText" />  

</LinearLayout>
复制代码Java代码
package net.csdn.blog.androidtoast;



import java.util.ArrayList;

import java.util.HashMap;



import android.app.Activity;

import android.os.Bundle;

import android.view.Gravity;

import android.view.View;

import android.widget.AdapterView;

import android.widget.GridView;

import android.widget.SimpleAdapter;

import android.widget.Toast;



public class MainActivity extends Activity {

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

        //定义图片整型数组

        private int[] mImages={

                        R.drawable.png1,

                        R.drawable.png2,

                        R.drawable.png3,

                        R.drawable.png4,

                        R.drawable.png5,

                        R.drawable.png6,

                        R.drawable.png7,

                        R.drawable.png8,

                        R.drawable.png9



        };

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        //实例化GridView

        GridView mGridView=(GridView) findViewById(R.id.gridview);

        // 生成动态数组,并且传入数据

        ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();

        

        for (int i = 0; i < 9; i++) {

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

            map.put("ItemImage", mImages);// 添加图像资源的ID

            map.put("ItemText", "NO." + String.valueOf(i+1));// 按序号做ItemText

            lstImageItem.add(map);

        }

        //构建一个适配器

        SimpleAdapter simple = new SimpleAdapter(this, lstImageItem,

                R.layout.gridviewitem,

                new String[] { "ItemImage", "ItemText" }, new int[] {

                        R.id.ItemImage, R.id.ItemText });

        mGridView.setAdapter(simple);

        //添加选择项监听事件

        mGridView.setOnItemClickListener(new GridView.OnItemClickListener(){



                        @Override

                        public void onItemClick(AdapterView<?> parent, View view,

                                        int position, long id) {

                                Toast toast=Toast.makeText(getApplicationContext(), "你选择了"+(position+1)+"号图片", 1);

                                toast.setGravity(Gravity.BOTTOM, 0, 0);

                                toast.show();

                        }

               

        });

        

    }

}
复制代码







GridViewExample.rar (1.41 MB, 下载次数: 13)

ListViewExample.rar (285.71 KB, 下载次数: 4)
回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:51:57 | 显示全部楼层

Re:一,android开发经典实例系

好东西!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 11:39 , Processed in 0.367615 second(s), 47 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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