Android中的列表空间非常灵活,可以自定义每一个列表项,实际上每一个列表项就是一个View,在Android定义了3个列表控件:ListView、ExpandableListView和Spinner,其中Spinner就是在Windows中常见的下拉列表框。

ListView控件用于列表的形式显示数据,ListView控件采用MVC模式将前端显示和后端数据进行分离。也就是说,ListView控件在装载数据时并不是直接使用ListView.add或者类似的方法添加数据,而是需要指定一个Adapter对象。该对象相当于MVC模式中的C(控制器,Controller)。ListView提供数据的List或数组相当于MVC模式中的M(模型,Model)在ListView控件中通过Adapter对象获得需要显示的数据,在创建Adapter对象时需要指定要显示的数据(List或数组对象),因此,要显示的数据与ListView之间通过Adapter对象进行连接,同事又互相独立,也就是说,ListView只知道显示的数据来自Adapter,并不知道这些数据来自List还是数组。

MVC好处,MVC把应用程序的逻辑与界面是完全分开的,最大的好处是:界面设计人员可以直接参与到界面的开发,程序员就可以把精力放在逻辑层上。而不是像以前那样,设计人员把所有的材料交给开发人员,由开发人员来实现界面。在Eclipse工具中开发Android采用了更加简单的方法,设计人员在Androidraw中设计界面,以xml方式保存,在Eclipse中直接打开就可以看到设计人员的设计界面,逻辑处理的代码放在src文件夹下,让程序员更专注与业务。

1.视图层(View):一般采用XML文件进行描述,使用的时候可以非常方便的引入。

同时方便于后期的界面的修改。逻辑中与界面对应的id不变化则代码不用修改,大大增强了代码的可维护性。

2.控制层(controller):Android的控制层的重任通常落在众多的Activity的肩上,这句话也就暗含了不要在Activity中写代码,要通过Activity交割Model业务逻辑层处理,这样做的另外一个原因是Android中的Activity的响应时间是5s,如果耗时的操作放在这里,程序很容易被回收掉。

3.模型层(Model):对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算等操作也是必须放在该层的。就是应用程序中的二进制的数据。

一、建立工程,如图

二、activity_main.xml中代码

<RelativeLayout 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"><ListView android:id="@+id/listview"android:layout_width="fill_parent"android:layout_height="fill_parent"></ListView></RelativeLayout>

View Code

三、MyDataSource.java中代码

package com.study.listview;import java.util.ArrayList;
import java.util.List;public class MyDataSource {public MyDataSource(){}public static List<String> getDataSource(){List<String> list = new ArrayList<String>();list.add("北京");list.add("上海");list.add("广州");list.add("贵州");list.add("海南");list.add("重庆");list.add("湖南");return list;}
}

View Code

四、MainActivity.java中代码

package com.study.listview;import java.util.List;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
//ListView普通列表空间的使用
public class MainActivity extends Activity {private ListView listView;private ArrayAdapter<String> adapter;private List<String> data = null; //表示数据源
    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);data = MyDataSource.getDataSource();listView = (ListView)this.findViewById(R.id.listview);//adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,data);adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_multiple_choice,data);//1 adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_single_choice,data);//1 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        listView.setChoiceMode(listView.CHOICE_MODE_MULTIPLE);listView.setAdapter(adapter);listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {Toast.makeText(MainActivity.this, "arg2=" + arg2 +",arg3=" + arg3, 1).show();return false;}});}@Overridepublic 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;}}

View Code

五、效果图

转载于:https://www.cnblogs.com/kingshow123/p/listview21.html

ListView普通列表控件的使用相关推荐

  1. Adapter类型控件之ListView(列表控件)

    (一)概述 Android中的列表控件飞创灵活,可以自定义每一个列表项,实际上每一个列表项就是一个View,在Android定义了3个列表控件:ListView.ExpandableListView和 ...

  2. java listview控件_ListView普通列表控件的使用

    Android中的列表空间非常灵活,可以自定义每一个列表项,实际上每一个列表项就是一个View,在Android定义了3个列表控件:ListView.ExpandableListView和Spinne ...

  3. android listview添加数据_Android系统列表控件

    在android系统控件中,有多个控件可以展示列表数据. 一.ListView 该组件是android中最常用的一个UI组件,用于实现在屏幕上显示多个内容,以便于我们用手指进行滑动. ListView ...

  4. 文件存储、列表控件 ListView 及适配器 SimpleAdapter、BaseAdapter 的使用方 法

    一.文件存储 文件存储 Android中的文件存储分为内部存储和外部存储. 内部存储:将应用程序的数据以文件方式存储到设备的内部(data/[你的APP的包名]/files下),当创建的应用程序被卸载 ...

  5. Android列表控件选项中添加进度框ProgressBar实现

        今天有时间就学习了下在ListView.GridView列表项中清加ProgressBar,小马用最简单的代码实现可以通用的功能,人人都能看懂,哈哈,直接说下,如果你的适配器getView方法 ...

  6. 虚拟列表控件---加载大数据行

    平常所用到的列ListView/ListCtrl控件,都是只有行至几百行数据,直至今日,在项目中遇到了上10W量级数据条,终于感觉到普通加载的艰辛,遂到网上乱找一通,发现大同小异,转载了这篇比较详细的 ...

  7. 安卓进阶系列-05列表控件(RecyclerView)的使用

    RecyclerView的使用 前言 在之前的博客中我介绍了ListView如何使用,当然那部分博客由于没有考虑基础的问题,写的跨度太大,后面我会全部重构的. ListView是一个滑动列表控件,随着 ...

  8. android 固定底部 布局_Android系统列表控件

    在android系统控件中,有多个控件可以展示列表数据. 一.ListView 该组件是android中最常用的一个UI组件,用于实现在屏幕上显示多个内容,以便于我们用手指进行滑动. ListView ...

  9. Android开发-列表控件

    列表控件是Android中最常见的控件之一 由于手机屏幕空间都比较有限,能够一次性在屏幕上显示的内容并不多,当我们的程序中有大量的数据需要展示的时候,就可以借助各种列表控件来实现. <ListV ...

  10. 【JQuery Mobile移动应用开发实战】JQuery Mobile基础——列表控件的使用

    文章目录 5. 列表控件的使用 5.1 简单的新闻列表 5.2 音乐专辑列表的显示 5.3 更完善的音乐专辑列表 5.4 显示销售的商品列表 5.5 图书销量排名 5.6 简单的电话通讯录 5.7 让 ...

最新文章

  1. 用C#实现的条形码和二维码编码解码器
  2. 2018.8.5 复习笔记
  3. html标记的索引,基于HTML标记分析及中文切词的网页索引研究与实现
  4. outlook域用户名怎么填_家谱制作软件怎么做成电子版
  5. 科兴生物董事长:两针建立免疫记忆 三针后抗体提升十倍
  6. cocos2D中scheduleOnce的陷阱
  7. border 0px和border none的区别
  8. Java第二次作业參考代码
  9. 0906--学成在线页面案例
  10. 控制理论个人学习笔记-非线性系统理论
  11. 空域变换-直方图匹配(直方图规定化)
  12. 2010年通信工程概预算培训讲义
  13. 微信自定义二维码扫码支付
  14. win11电脑加密文件夹的两种方法
  15. webstorm中使用nodemon
  16. 《嵌入式 – GD32开发实战指南》第3章 GPIO流水灯的前世今生
  17. 我的世界服务器物品不丢弃,《我的世界》怎样处理没用的物品,这六个销毁物品方法了解一下!...
  18. 大数据时代,AIoT在智慧社区的深度应用
  19. “六如真言”,战必克,攻必取,无往不胜!
  20. 2010年1月21日俱乐部活动,同方软件CTO周洪波博士主讲物联网

热门文章

  1. 远程管理软件Royal TSX for Mac
  2. System Toolkit for Mac(Mac系统维护工具)
  3. SpringBoot使用Swagger2实现Restful API
  4. MongoDB 学习笔记之 手动预先分片
  5. HDU 1203 I need a offer! (01背包)
  6. Hadoop2.2.0--Hadoop Federation、Automatic HA、Yarn完全分布式集群结构
  7. JAVA 使用Dom4j 解析XML
  8. Ubuntu 分卷压缩和解压
  9. 宝贝,后端接口如何提高性能?
  10. 再见!收费的 XShell,我改用国产良心工具!