Android列表视图(ListView--ArrayAdapter)学习

来源:互联网 发布:java方法是什么 编辑:程序博客网 时间:2024/04/29 17:29

      Android中ListView是用来显示列表的控件,用户可以选择和操纵这个列表,同时会触发一些事件。鼠标滚动

时候会触发setOnItemSelectedListener事件,点击时会触发setOnItemClickListener事件。

      列表视图ListView组件主要应用于将应用数据以列表的形式进行显示,很多地方都能够见到他的影子,因此,

将ListView的用法以及相关的特点做一些总结,以便之后查阅。

      通过查阅API文档ListView就是一个View group用于展现可以滚动的数据,这些数据是通过Adapter(适配器)

从数据源中(数组,数据库记录)得到内容,并且转换每一项的结果到一个View中,之后把View插入到list里面。

     以上可以看出使用ListView需要3个元素:

               ListView 用来展现数据列表的View

               ● Adapter(适配器)用来把数据映射到ListView的中介。(到底什么是适配器:找个时间了解一下)

               ● Data (数据)具体被映射的数据源:数组,字符串、图片,数据库记录、UI组件等

         上面3中元素中十分重要的是Adapter,根据列表的适配器类型,有三种

                 ArrayAdapter:就如其名一样,数组类型的,只能简单的展示一串字符,最简单的类型。

                  SimpleAdapter:具有更好的扩充性,可以自定义各种效果的ListView。

                  SimpleCursorAdapter:与SimpleAdapter用法类似,专用于数据库数据的绑定。

         根据以上三种适配器,简单的例子程序如下:

              1、ArrayAdapter的运用:

               activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity"     android:orientation="vertical">  <LinearLayout       android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:orientation="horizontal">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="ListView之ArrayAdapter"        android:textSize="16sp" />         <Button         android:id="@+id/simple_adapter"        android:text="Next"        android:paddingLeft="10dip"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        />     </LinearLayout>    <ListView         android:layout_marginTop="5dip"        android:id="@+id/array_list"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        >            </ListView>    </LinearLayout>
           MainActivity.java

package com.kiritor.layout_listview;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity {    private TextView textView = null;    private Button simpleAdapter = null;    private ListView listView = null;    private ArrayList<String> arrayList = new ArrayList<String>();// 存放数据    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        simpleAdapter = (Button) findViewById(R.id.simple_adapter);        listView = (ListView) findViewById(R.id.array_list);        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                R.layout.list, getList());        // R.layout.list自定义布局,但是内容只能是TextView        listView.setAdapter(adapter);        textView = (TextView) findViewById(R.id.text_title);         //添加监听         listView.setOnItemClickListener(new OnItemClickListener() {            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,                    long arg3) {                // TODO Auto-generated method stub                textView.setText(textView.getText() + "aaaa");            }        });          //添加监听         listView.setOnItemSelectedListener(new OnItemSelectedListener() {             /*arg1是当前选中的View,arg2是当前选中View的ID,arg3是当前view所处的位置*/            @Override            public void onItemSelected(AdapterView<?> arg0, View arg1,                    int arg2, long arg3) {                // TODO Auto-generated method stub            }            @Override            public void onNothingSelected(AdapterView<?> arg0) {                // TODO Auto-generated method stub            }        });         //添加长按的监听         listView.setOnItemLongClickListener(new OnItemLongClickListener() {            @Override            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,                    int arg2, long arg3) {                // TODO Auto-generated method stub                return false;            }        });    }    // 得到数据    private ArrayList<String> getList() {        arrayList.add("Coder的坚持~~");        arrayList.add("  Coder的善良~~");        arrayList.add("    Coder的勤奋~~");        arrayList.add("      Coder的思绪~~");        arrayList.add("Coder的坚持~~");        arrayList.add("  Coder的善良~~");        arrayList.add("    Coder的勤奋~~");        arrayList.add("      Coder的思绪~~");        arrayList.add("Coder的坚持~~");        arrayList.add("  Coder的善良~~");        arrayList.add("    Coder的勤奋~~");        arrayList.add("      Coder的思绪~~");        arrayList.add("Coder的坚持~~");        arrayList.add("  Coder的善良~~");        arrayList.add("    Coder的勤奋~~");        arrayList.add("      Coder的思绪~~");        arrayList.add("Coder的坚持~~");        arrayList.add("  Coder的善良~~");        arrayList.add("    Coder的勤奋~~");        arrayList.add("      Coder的思绪~~");        return arrayList;    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}
             list.xml文件:

<?xml version="1.0" encoding="utf-8"?><TextView    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:id="@+id/text1"    android:textColor="#000000"    android:textSize="14sp"/>
            

              附上效果图:

                完整源码:

                       http://download.csdn.net/detail/kiritor/5122082

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机卡不用了支付宝账号怎么办 手机校园网不弹出登录界面怎么办 百度云需要邮箱验证怎么办 网页百度网盘不播放视频怎么办 手机qq邮箱中转站容量不足怎么办 qq邮箱容量满了怎么办 手机邮箱中转站容量不足怎么办 微信号登陆要好友验证怎么办 邮箱账号名忘了怎么办 苹果六话筒坏了怎么办 iphone后置摄像头坏了怎么办 苹果8听歌声音小怎么办 酷狗音乐没了怎么办 手机听歌音量小怎么办 苹果手机酷狗音乐打不开怎么办 电脑酷狗音乐打不开怎么办 酷狗音乐无法运行播放怎么办? 酷狗音乐停止运行怎么办 米6蓝牙声音小怎么办 手里酷狗id丢了怎么办 连麦声音不好听怎么办 微信语音声音很难听怎么办 微信聊天语音没有声音怎么办 微信发语音声音不好听怎么办 微信语音说话不好听怎么办 微信字体变粗怎么办 笔记本无法识别usb设备怎么办 手机qq音乐闪退怎么办 qq音乐总是闪退怎么办 手机qq音乐闪退怎么办修复 苹果7p耳机漏音怎么办 akgn25耳机盖掉了怎么办 外汇平台跑路了怎么办 微云资料没了怎么办 酷狗k歌有杂音怎么办 手机k歌音质不好怎么办 酷狗让升级内测取消之后怎么办 苹果5s声音太小怎么办 苹果6p调均衡卡怎么办 忘记密码怎么办登录云教育 登录微信收不到验证码怎么办