Android开发之列表控件

一、基础知识:

ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。先说说ListView的实现:

1.准备ListView要显示的数据;

2.使用一维或多维动态数组保存数据;

3.构建适配器,简单地来说,适配器就是Item数组,动态数组有多少元素就生成多少个Item;

4.把适配器添加到ListView,并显示出来。

  

二、代码展示:

1."Activity_10srcyanactivity_10MainActivity.java"

[java]

package yan.activity_10; 

 

import java.util.ArrayList; 

import java.util.HashMap; 

 

import android.os.Bundle; 

import android.view.View; 

import android.widget.ListView; 

import android.widget.SimpleAdapter; 

import android.app.ListActivity; 

 

public class MainActivity extends ListActivity { 

    private final String raw_user_name = "user_name"; 

    private final String raw_user_id = "user_id"; 

    private final String raw_user_ip = "user_ip"; 

     

    private String user_name_array[]={"zhangsan","lisi","wangwu"}; 

    private String user_ip_array[]={ 

            "192.168.1.115", 

            "192.168.1.116", 

            "192.168.1.117"}; 

     

    @Override 

    protected void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

         

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

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

         

        for(int i=0; i<30; ++i) 

        { 

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

            System.out.println("HAH : " + i%3); 

            map.put(raw_user_name, user_name_array[i%3]); 

            map.put(raw_user_id, i+1+""); 

            map.put(raw_user_ip, user_ip_array[i%3]); 

            mylistArray.add(map); 

        } 

         

        //生成适配器,数组-->>ListItem  

        SimpleAdapter mSchedule = new SimpleAdapter( 

                this, 

                mylistArray,    //  数据来源  

                R.layout.my_listview,   // ListItem的XML实现  

                new String[] {raw_user_name,raw_user_id,raw_user_ip},   // 动态数组与ListItem对应的子项  

                new int[] {R.id.user_name,R.id.user_id,R.id.user_ip}    // ListItem的XML文件里面的两个TextView ID  

                ); 

        setListAdapter(mSchedule); 

    } 

 

    @Override 

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

        // TODO Auto-generated method stub  

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

        System.out.println("id ---------------- " + id); 

        System.out.println("position ---------------- " + position); 

    } 

       

package yan.activity_10;

import java.util.ArrayList;

import java.util.HashMap;

import android.os.Bundle;

import android.view.View;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.app.ListActivity;

public class MainActivity extends ListActivity {

 private final String raw_user_name = "user_name";

 private final String raw_user_id = "user_id";

 private final String raw_user_ip = "user_ip";

 

 private String user_name_array[]={"zhangsan","lisi","wangwu"};

 private String user_ip_array[]={

   "192.168.1.115",

   "192.168.1.116",

   "192.168.1.117"};

 

 @Override

 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  

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

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

  

  for(int i=0; i<30; ++i)

  {

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

   System.out.println("HAH : " + i%3);

   map.put(raw_user_name, user_name_array[i%3]);

   map.put(raw_user_id, i+1+"");

   map.put(raw_user_ip, user_ip_array[i%3]);

   mylistArray.add(map);

  }

  

  //生成适配器,数组-->>ListItem

  SimpleAdapter mSchedule = new SimpleAdapter(

    this,

    mylistArray, // 数据来源

    R.layout.my_listview, // ListItem的XML实现

    new String[] {raw_user_name,raw_user_id,raw_user_ip}, // 动态数组与ListItem对应的子项

    new int[] {R.id.user_name,R.id.user_id,R.id.user_ip} // ListItem的XML文件里面的两个TextView ID

    );

  setListAdapter(mSchedule);

 }

 @Override

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

  // TODO Auto-generated method stub

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

  System.out.println("id ---------------- " + id);

  System.out.println("position ---------------- " + position);

 }

 

 

}

 

2."Activity_10reslayoutmain.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="wrap_content"   

    >   

   <ListView 

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

       android:layout_width="fill_parent" 

       android:layout_height="wrap_content" 

       android:drawSelectorOnTop="false" 

       android:scrollbars="vertical" 

    /> 

</LinearLayout>   

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

    > 

   <ListView

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

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:drawSelectorOnTop="false"

       android:scrollbars="vertical"

    />

</LinearLayout>  

3."Activity_10reslayoutmy_listview.xml"  my_listview.xml用于设计ListView的Item:

[html]

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

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

    android:layout_width="fill_parent" 

    android:layout_height="fill_parent" 

    android:orientation="horizontal" 

    android:paddingBottom="3dip" 

    android:paddingTop="1dip" 

    android:paddingLeft="10dip"> 

    <TextView 

        android:id="@+id/user_name" 

        android:layout_width="100dp" 

        android:layout_height="30dp" 

        android:textSize="10pt" 

        android:singleLine="true"/> 

    <TextView 

        android:id="@+id/user_id" 

        android:layout_width="100dp" 

        android:layout_height="30dp" 

        android:textSize="10pt" 

        android:singleLine="true"/> 

    <TextView 

        android:id="@+id/user_ip" 

        android:layout_width="wrap_content" 

        android:layout_height="fill_parent" 

        android:gravity="right" 

        android:textSize="10pt"/> 

</LinearLayout> 

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

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

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="horizontal"

    android:paddingBottom="3dip"

    android:paddingTop="1dip"

    android:paddingLeft="10dip">

    <TextView

        android:id="@+id/user_name"

        android:layout_width="100dp"

        android:layout_height="30dp"

        android:textSize="10pt"

        android:singleLine="true"/>

    <TextView

        android:id="@+id/user_id"

        android:layout_width="100dp"

        android:layout_height="30dp"

        android:textSize="10pt"

        android:singleLine="true"/>

 <TextView

        android:id="@+id/user_ip"

        android:layout_width="wrap_content"

        android:layout_height="fill_parent"

        android:gravity="right"

        android:textSize="10pt"/>

</LinearLayout>

 

三、效果展示:

 开发之列表控件-android列表控件">

时间: 2024-11-08 20:20:34

Android开发之列表控件的相关文章

android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)

Android开发经常要对列表的滚动位置进行保存和恢复,网上也有很多关于此功能的方法文章,但绝大多数都只能保存恢复到某一行,对于滚动到半行的情况不能精确的恢复.也有很多文章介绍了好几种方法,也说某些方法能够精确的控制,但实际上根本不能实现.还有些介绍了很多玄乎且非常复杂的方法,但也没看到能完整实现的代码. 经过一段时间的研究测试,下面的代码可以完美的实现列表滚动位置的精确保存和恢复,而且只是在原来记忆到行位置的基础上增加了2行代码而已. 具体见下面代码和注释: //保存位置: int posit

Android开发中include控件用法分析_Android

本文实例讲述了Android开发中include控件用法.分享给大家供大家参考,具体如下: 我们知道,基于Android系统的应用程序的开发,界面设计是非常重要的,它关系着用户体验的好坏.一个好的界面设计,不是用一个xml布局就可以搞定的.当一个activity中的控件非常多的时候,所有的布局文件都放在一个xml文件中,很容易想象那是多么糟糕的事情!笔者通过自身的经历,用include控件来解决这个问题,下面是一个小例子,仅仅实现的是布局,没有响应代码的设计. user.xml文件内容如下: <

Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全

原文:Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全 前面简单学习了一些Android UI的一些基础知识,那么接下来我们一起来详细学习Android的UI界面基本组件.     一.认识TextView 我们知道前面学习的HelloWorld应用程序中就是使用的TextView来显示一个文本,接下来首先一起来学习TextView的使用方法. TextView的作用就是在界面上显示文本.TextView直接继承了 View,是EditText.Bu

Android开发之基本控件和四种布局方式详解_Android

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

Android开发之基本控件和四种布局方式详解

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

Android开发中include控件用法分析

本文实例讲述了Android开发中include控件用法.分享给大家供大家参考,具体如下: 我们知道,基于Android系统的应用程序的开发,界面设计是非常重要的,它关系着用户体验的好坏.一个好的界面设计,不是用一个xml布局就可以搞定的.当一个activity中的控件非常多的时候,所有的布局文件都放在一个xml文件中,很容易想象那是多么糟糕的事情!笔者通过自身的经历,用include控件来解决这个问题,下面是一个小例子,仅仅实现的是布局,没有响应代码的设计. user.xml文件内容如下: <

Android ExpandableListView展开列表控件使用实例_Android

你是否觉得手机QQ上的好友列表那个控件非常棒? 不是..... 那也没关系,学多一点知识对自己也有益无害. 那么我们就开始吧. 展开型列表控件, 原名ExpandableListView 是普通的列表控件进阶版, 可以自由的把列表进行收缩, 非常的方便兼好看. 首先看看我完成的截图, 虽然界面不漂亮, 但大家可以自己去修改界面. 该控件需要一个主界面XML 一个标题界面XML及一个列表内容界面XML 首先我们来看看 mian.xml 主界面 复制代码 代码如下: //该界面非常简单, 只要一个E

android开发教程 常用控件讲解

基本控件 1.TextView: 功能与传统的桌面应用开发中的Label控件相似,用于显示文本信息 如: <TextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:textColor="#0000ff"         android:textSize="40s

Android开发中RecyclerView控件使用实例教程

Android RecyclerView 是Android5.0推出来的,导入support-v7包即可使用. 个人体验来说,RecyclerView绝对是一款功能强大的控件. 首先总结下RecyclerView的特点: 1.支持不同方向,不同排版模式,实现多种展现数据的形式,涵盖了ListView,GridView,瀑布流等数据表现的形式 2.内部实现了回收机制,无需我们考虑View的复用情况 3.取消了onItemClick等点击事件,需要自己手动去写 -------------------