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

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里面处理,当然对业务计算等操作也是必须放在该层的。就是应用程序中的二进制的数据。

一、建立工程,如图

6fc3f688c8cef505dafea648ccd293af.png

二、activity_main.xml中代码

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

>

android:id="@+id/listview"android:layout_width="fill_parent"android:layout_height="fill_parent"

>

View Code

三、MyDataSource.java中代码

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.study.listview;importjava.util.ArrayList;importjava.util.List;public classMyDataSource {publicMyDataSource(){

}public static ListgetDataSource(){

List list = new ArrayList();

list.add("北京");

list.add("上海");

list.add("广州");

list.add("贵州");

list.add("海南");

list.add("重庆");

list.add("湖南");returnlist;

}

}

View Code

四、MainActivity.java中代码

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.study.listview;importjava.util.List;importandroid.os.Bundle;importandroid.app.Activity;importandroid.view.Menu;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.ArrayAdapter;importandroid.widget.ListView;importandroid.widget.Toast;//ListView普通列表空间的使用

public class MainActivity extendsActivity {privateListView listView;private ArrayAdapteradapter;private List data = null; //表示数据源

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

data=MyDataSource.getDataSource();

listView= (ListView)this.findViewById(R.id.listview);//adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1,data);

adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_multiple_choice,data);//1 adapter = new ArrayAdapter(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(newAdapterView.OnItemLongClickListener() {

@Overridepublic boolean onItemLongClick(AdapterView>arg0, View arg1,int arg2, longarg3) {

Toast.makeText(MainActivity.this, "arg2=" + arg2 +",arg3=" + arg3, 1).show();return false;

}

});

}

@Overridepublic booleanonCreateOptionsMenu(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

五、效果图

25b1691ab729abc14e851818cc728628.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Kaggle】Intro to Machine Learning 第一次提交 Titanic

项目官网地址 新手可以参考这篇 8、Getting Started With Titanic,教你如何操作、提交等 自己简要再记录一下: Join the competition 各个 tab 下可以查看数据Data、代码编写Notebooks、讨论、排名、比赛规则、队伍点击 Notebooks,新建文…

在C#代码中执行BCS外部内容类型方法

在前面的博文中我们讨论了如何使用Business Connectivity Services对象模型栏获取已部署在SharePoint BCS中的外部内容类型。 本文中我们将学习如何获取一个ECT的BCS方法集合。并且还要通过Business Connectivity Services对象模型执行其中的Finder方法和SpecificFinder方法。…

java ndc_通过slf4j/log4j的MDC/NDC 实现日志追踪

在分布式系统或者较为复杂的系统中,我们希望可以看到一个客户请求的处理过程所涉及到的所有子系统\模块的处理日志。由于slf4j/log4j基本是日志记录的标准组件,所以slf4j/log4j成为了我的重点研究对象。slf4j/log4j支持MDC,可以实现同一请求的…

常用的匹配正则表达式

常用的匹配正则表达式 正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式…

LeetCode 1091. 二进制矩阵中的最短路径(BFS)

1. 题目 在一个 N N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。 一条从左上角到右下角、长度为 k 的畅通路径, 由满足下述条件的单元格 C_1, C_2, ..., C_k 组成:相邻…

java 反射的弊端_java反射机制的一些学习心得小结

概述之前在了解Spring的类加载机制的时候,了解了java的反射机制。但是,我对反射理解一直不深。也一直有点疑惑:Spring为什么利用反射创建对象?直接new对象和依靠反射创建对象有什么区别?什么是动态加载类?什…

llog

/Files/TNTZWC/zxLog.rar转载于:https://www.cnblogs.com/TNTZWC/archive/2010/07/13/1776437.html

LeetCode 1015. 可被 K 整除的最小整数(数学)

1. 题目 给定正整数 K,你需要找出可以被 K 整除的、仅包含数字 1 的最小正整数 N。 返回 N 的长度。如果不存在这样的 N,就返回 -1。 示例 1: 输入:1 输出:1 解释:最小的答案是 N 1,其长度为…

网站公告js

<html><head><meta http-equiv"Content-Language" content"zh-cn"><meta http-equiv"Content-Type" content"text/html; charsetgb2312"><title>网站公告滚动</title></head><body> …

LeetCode 923. 三数之和的多种可能(双指针)

1. 题目 给定一个整数数组 A&#xff0c;以及一个整数 target 作为目标值&#xff0c;返回满足 i < j < k 且 A[i] A[j] A[k] target 的元组 i, j, k 的数量。 由于结果会非常大&#xff0c;请返回 结果除以 10^9 7 的余数。 示例 1&#xff1a; 输入&#xff1a;…

Java用sqlit拆分小数_如何将SQLite列中的分隔值拆分为多列

拉开一列是为Python非常简单(不确定关于SQLite)。这将您的DB行简化为一个字符串数组&#xff0c;并且应该与SQLite返回类似。text [Apple,Banana, Pear,Lemon, Peach, Apricot]for line in text:cols [c.strip() for c in line.split(,)]print(cols)应该输出每串线阵列&#…

Flex读取XML不刷新问题

Flex读取servlet提供的xml数据&#xff0c;有更新功能。数据更新后&#xff0c;Firefox下完全正常&#xff0c;IE下死活刷新不出新数据。郁闷呢了好长时间&#xff0c;以为是资源释放的问题。整整高了将近两个小时。没搞定&#xff0c;只能请教头了。问题描述完&#xff0c;头问…

java程序语言228_2019年Java面试题基础系列228道(5)

21、存在两个类&#xff0c;B 继承 A&#xff0c;C 继承 B&#xff0c;我们能将 B 转换为C 么&#xff1f;如 C (C) B&#xff1b;这属于强制类型转换&#xff0c;如果被转换的B实例不是C类型&#xff0c;会有异常比如你的ABC分别对应动物&#xff0c;猫&#xff0c;黑猫。向上…

LeetCode 1442. 形成两个异或相等数组的三元组数目(前缀异或)

1. 题目 给你一个整数数组 arr 。 现需要从数组中取三个下标 i、j 和 k &#xff0c;其中 (0 < i < j < k < arr.length) 。 a 和 b 定义如下&#xff1a; a arr[i] ^ arr[i 1] ^ ... ^ arr[j - 1]b arr[j] ^ arr[j 1] ^ ... ^ arr[k] 注意&#xff1a;^ 表…

解决锚点在IE8中失效

锚点功能在网站制作过程中是经常会用到的&#xff0c;而且是一个非常好用的功能。 今天遇到这样一个问题刚刚做好的静态页面使用到了锚点&#xff0c;用IE8打开却失效了。尝试用火狐&#xff0c;360浏览器打开却没问题。很明显这是浏览器的兼容性问题。 解决办法…

java jsoup获取cookie_java – 如何使用jsoup维护变量cookie和会话?

这段代码非常令人困惑.流程不合逻辑,异常处理很糟糕.像if(p&#xff01; path)和if(cookys&#xff01; cookies)之类的对象引用比较没有任何意义.要比较对象的内容,您需要使用equals()方法.到目前为止,我知道您希望在同一个域上的一堆后续Jsoup请求中维护cookie.在这种情况下,…

LeetCode 1443. 收集树上所有苹果的最少时间(自底向上DFS)

1. 题目 给你一棵有 n 个节点的无向树&#xff0c;节点编号为 0 到 n-1 &#xff0c;它们中有一些节点有苹果。 通过树上的一条边&#xff0c;需要花费 1 秒钟。 你从 节点 0 出发&#xff0c;请你返回最少需要多少秒&#xff0c;可以收集到所有苹果&#xff0c;并回到节点 0 …

利用多线程句柄设置鼠标忙碌状态

当我们在读取数据的时候&#xff0c;或者处理大量数据的时候可能需要把鼠标设置为忙碌状态&#xff0c;等待返回结果。下面的代码可以帮忙实现这点&#xff1a; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Syste…

java怎吗从磁盘读文件_编写一个Java应用程序,该程序使用FileInputStream类,实现从磁盘读取本应用程序源代码文件,并将文件内容显示在屏幕上。...

满意答案x786741812013.05.10采纳率&#xff1a;42% 等级&#xff1a;12已帮助&#xff1a;14476人import java.io.FileInputStream;import java.io.InputStreamReader;import java.io.BufferedReader;import java.io.IOException;import java.io.FileNotFoundException;pub…

漂亮的博客搜索框

看到漂亮的搜索框&#xff0c;收藏... 主要用背景图片和输入框和链接隐藏完成。 可以在IE6,ff&#xff0c;chorme下兼容... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quo…