Android开发之ListView、GridView 详解及示例代码

Android开发之ListView、GridView 详解及示例代码,第1张

概述   ListView与GridView是Android开发中的常用控件,它们和Adapter配合使用能够实现很多界面效果。下面分别以实例说明ListView、GridView的用法。

    ListVIEw与GrIDVIEw是AndroID开发中的常用控件,它们和Adapter配合使用能够实现很多界面效果。下面分别以实例说明ListVIEw、GrIDVIEw的用法。

       1.ListVIEw的AndroID开发实例

       ListVIEw 是androID开发中最常用的控件之一,一般构成列表包括三个元素,ListVIEw:用来展示列表的视图、Adapter:数据与视图连接的桥梁、Data:具体的数据包括字符串 、图片或者控件。

       适配器一般有以下几种类型:

       ArrayAdapter:AndroID中最简单的一种适配器,专门用于列表控件。只显示一行数据。

       SimpleAdapter:此适配器有最好的扩充性,可以自定义出各种效果。经常使用静态数据填充列表。

       CursorAdapter:通过游标向列表提供数据。

       ResourceCursorAdapter:这个适配器扩展了CursorAdapter,知道如何从资源创建视图。

       SimpleCursorAdapter:这个适配器扩展了ResourceCursorAdapter,从游标中得列创建 TextVIEw/ImageVIEw视图。下面获取通讯录的示例

XML/HTML代码

<?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"          >     <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);       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,ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + Long.toString(ID),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的AndroID开发实例

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

XML/HTML代码

<?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/HTML代码<?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[i]);// 添加图像资源的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,long ID) {           Toast toast=Toast.makeText(getApplicationContext(),"你选择了"+(position+1)+"号图片",1);           toast.setGravity(Gravity.BottOM,0);           toast.show();         }                });            }   } 

       看了这两个AndroID开发实例,相信大家对ListVIEw、GrIDVIEw的使用有了一定掌握了。大家还可以使用它们和Adapter实现更多的功能试试。

        以上就是对AndroID ListVIEw 和GrIDVIEw 的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

总结

以上是内存溢出为你收集整理的Android开发之ListView、GridView 详解及示例代码全部内容,希望文章能够帮你解决Android开发之ListView、GridView 详解及示例代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1148432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存