安卓打气筒_12.安卓,ListView,打气筒的初次使用
先来介绍一下ListView这么个东西,适合用在一排数据的展示中,
例如,这样的一个就是使用了List View这么一个控件实现功能
实现的思路主要是这样
在布局里面加一个ListView像是这样,以下代码是常用的他的一些方法
然后在MainActivity中找到这个控件,然后为他增加一个适配器。
适配器我们最先介绍一个叫做BaseAdapter的适配器,这个比较洋气
比较好用,
实现的效果是上面的那一个图
packagecom.example.xialm.list_test2;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.ListView;importandroid.widget.TextView;public class MainActivity extendsAppCompatActivity {
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView ll=(ListView)findViewById(R.id.lv);//设置适配器
ll.setAdapter(newmyad());
}
//开始编写适配器public class myad extendsBaseAdapter{
//下面是Base Adapter的四个构造方法,
@Overridepublic intgetCount() {//实现几个条目的显示
return 100000;
}
@Overridepublic Object getItem(intposition) {return null;
}
@Overridepublic long getItemId(intposition) {return 0;
}
@Overridepublic View getView(intposition, View convertView, ViewGroup parent) {
TextView tv;if(convertView == null){//创建新的缓存对象
tv = new TextView(MainActivity.this);
}else{//复用新的缓存对象
tv =(TextView)convertView;
}int s = position+1;
tv.setText("你好,你是第"+s+"个世界");returntv;
}
}
}
既可实现,
那么我们可以看到上面那个有点low,像我们手机上那种洋气一点的布局是怎么做的呢,
最起码得实现一个这样的布局把
如下:
这个好像还可以接受一小下下,那么我们现在的数据是我们自己造的,我们在后面会提到
如何从其他的地方拿到我们需要的东西然后再放到我们的LIst View上面来显示,
尤其是数据库中的数据放到我们的界面上
先不剧透了,先来搞上面的那个界面,
有第一个案例来说, 我们可以发现要做出这样的案例,只需要改动我们Adapter里面的一个
叫做getView 这个方法就可以了,
也就是我们要改动的是这一块
@Overridepublic View getView(intposition, View convertView, ViewGroup parent) {
TextView tv;if(convertView == null){//创建新的缓存对象
tv = new TextView(MainActivity.this);
}else{//复用新的缓存对象
tv =(TextView)convertView;
}int s = position+1;
tv.setText("你好,你是第"+s+"个世界");returntv;
}
整体的框架我们不需要改动,尤其是if 和 else这一段逻辑
解释一下这一段逻辑是用来实现将我们的程序内存最大的优化
是我们的app的运行更加流畅,使资源不会因为还没有释放之前,
就内存溢出了
那么我们改动哪一块呢,
应该是textview那一快
看上去这样只能显示一行的内容,我们现在想要在左边显示一个图片,
在右边显示两个文本框框,这个明显涉及到了布局
我们再回首看我们的代码的时候发现,我们代码中写的我们只能显示view
当然TextView是View的一种啦
那么顺理成章的,现在可以将目光和思路引导到我们实现 将布局文件转换为 view的伟大道路上
Android底层的工程师为我们创建了这么一个api正好是可以进行实现我们的功能
江湖人称,打气筒,
总结一下,一切思路和上面第一个案例一样,
我们只需要改变Adapter中第四个构造方法中的view
想实现那个就必须要将layout文件转换为view,我们引进了一个技术叫做打气筒
下面是代码
xml
main
只有一个listview控件
xml
item
这个是我们每一个显示条目的格式,
大概就是这样,左边是一个图片,右边是两个文本框,上面一个大一点的下面是一个小一点的
在代码中需要实现一个打气筒的步骤这一步是将一个layout布局变成一个view,
这样来实现,能够把一个布局变成一个view,显示到listview中
下面是逻辑代码
packagecom.example.xialm.listview_3;importandroid.app.AlertDialog;importandroid.content.DialogInterface;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.KeyEvent;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.ListView;importandroid.widget.TextView;importjava.util.List;importjava.util.zip.Inflater;public class MainActivity extendsAppCompatActivity {
AlertDialog builder=null;
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//找到List View这个我们关心的对象
ListView lv_ =(ListView)findViewById(R.id.lv);//给我们的lv_一个适配器,用于给我们的lv_加上数据
lv_.setAdapter(newMyad());//做完这一步之后就是建类,是一个我们的适配器类,这里是继承了BaseAdapter
}//当用户选择点击返回的时候,给用户以友好的提示
@Overridepublic boolean onKeyUp(intkeyCode, KeyEvent event) {if (keyCode ==KeyEvent.KEYCODE_BACK) {
builder= new AlertDialog.Builder(MainActivity.this)
.setTitle("温馨提示:")
.setMessage("您是否要退出程序?")
.setPositiveButton("确定",newDialogInterface.OnClickListener() {public voidonClick(DialogInterface dialog,intwhichButton) {
MainActivity.this.finish();
}
})
.setNegativeButton("取消",newDialogInterface.OnClickListener() {public voidonClick(DialogInterface dialog,intwhichButton) {
builder.dismiss();
}
}).show();
}return true;
}//自己定义一个类继承baseadapter
public class Myad extendsBaseAdapter
{
@Overridepublic intgetCount() {//创建多少个项目
return 500;
}
@Overridepublic Object getItem(intposition) {return null;
}
@Overridepublic long getItemId(intposition) {return 0;
}
@Overridepublic View getView(intposition, View convertView, ViewGroup parent) {
View view;if(convertView == null){//创建新的view对象//可以通过一个打气筒将一个布局资源转换为一个view对象//view = View.inflate(MainActivity.this,R.layout.itemm,null);//将布局文件不仅转换成了view,而且最后一个参数用来做了一个组,//可以把刚生成的view添加进来//打气筒的第二种方法
view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.itemm,null);//打气筒的第三种方法//LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);//view = inflater.inflate(R.layout.itemm,null);
}else{//复用旧的view对象
view =convertView;
}returnview;
}
}
}
下面介绍一个比较简单的数组适配器,arrayadapter
相比于上面的那一个我们可以看出来,好像使用第一个baseadapter也可以实现同样的功能,
是的,因为数组适配器的出现就是为了显示数组中的基本内容,并且是显示到一个文本框框里面,
我们知道数据适配器的作用就是用来实现,把数据和显示连接在一起,像是数据-->适配器-->显示器,这样一个过程
那么,需求如果是很简单的内容,我们是不是还需要使用复杂的适配器呢,
当然不用,这里提供一个适配器叫做数组适配器,使用方法简单
使用的场合是仅显示一行文字的时候使用
下面是代码‘
xml:mainactivity
>
xml:item
>
/>
/>
逻辑代码
packagecom.example.xialm.arrayadapter;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.widget.ArrayAdapter;importandroid.widget.ListView;public class MainActivity extendsAppCompatActivity {
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//找到关心的控件
ListView ll =(ListView)findViewById(R.id.lv_1);//定一个数组为了加进去
String objects[] = {"你好","世界","hello","world"};//搞一个数组适配器,将数组里面的内容展示到我们的listview上//但是我们的这个适配器有一个局限性,智能显示一个textview,要实现更多的功能还是需要使用复杂一点的适配器,
ArrayAdapter myadd = new ArrayAdapter(getApplicationContext(), R.layout.item, R.id.tv_name,objects);//ArrayAdapter myadd1 = new ArrayAdapter(getApplicationContext(), R.layout.item, R.id.tv_number,objects);//设置数据适配器
ll.setAdapter(myadd);//ll.setAdapter(myadd1);
}
}
下面一种是simpleadapter
集合里面放字典
字典里面放键值对
使用设置好的集合配置 simpleadapter
xml main
/>
/>
>
xml item
>
>
/>
/>
逻辑代码
packagecom.example.xialm.simpleadapter;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.widget.ListView;importandroid.widget.SimpleAdapter;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;public class MainActivity extendsAppCompatActivity {
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//找到我们关心的控件
ListView lv =(ListView) findViewById(R.id.lv_1);//准备listview要显示的数据
List> data1 = new ArrayList>();//准备map放入list,
Map map1 = new HashMap();
map1.put("name","猪哥");
map1.put("phone", "663924");
Map map2 = new HashMap();
map2.put("name","梅鸣");
map2.put("phone", "662086");
Map map3 = new HashMap();
map3.put("name","你岩");
map3.put("phone","662110");
data1.add(map1);
data1.add(map2);
data1.add(map3);
SimpleAdapter mysim= new SimpleAdapter(MainActivity.this,data1,R.layout.item,new String[]{"name","phone"},new int[]{R.id.tv_3,R.id.tv_4});//上下文,要显示在哪个界面上的//数据,这个数据是一个list,里面有map的一个数据,//加载的界面//这个是显示的列,//列里面显示什么,因为id号是int所以使用int数组//配置这个适配器
lv.setAdapter(mysim);
}
}
安卓打气筒_12.安卓,ListView,打气筒的初次使用相关推荐
- 什么是android刷机包,什么是安卓RAM?安卓RAM和安卓ROM有什么区别?
我们平时听到的安卓系统其实是一个很复杂的程序,就比如安卓ROM和安卓RAM,安卓ROM我们平时可能听说过,但是RAM可能听说就比较少了,对于初次了解安卓的机友来说可能是一个模糊的地方.今天,小编就为大 ...
- coloros11跟Android,安卓10与安卓11究竟差异在哪里?我们拿这两台新机试了一下
9 月 24 日,OPPO 带着全新的 ColorOS 11 与我们正式见面,这一基于安卓 11 底层深度打造的新系统给我们带来了不少新特性.而就在 ColorOS 11 发布的前些天,华为也为我们带 ...
- sqllite开发安卓项目_安卓学习笔记(一)
本人接触安卓也有一年半载了.本人是c++程序员,我对于安卓和java的态度就像,c++是大老婆,java和安卓是小老婆.但是大老婆总是让人不省心,所以安卓还是挺好玩的.那么接下来写写文章,记录一下安卓 ...
- win10 linux安卓模拟器,WIN10电脑安卓模拟器逍遥安卓唯一真正支持
原标题:WIN10电脑安卓模拟器逍遥安卓唯一真正支持 WIN10操作系统来了,微软宣布可以免费升级!逍遥安卓模拟器在WIN10刚发布体验版之初便已完美兼容,至现在已经被数十万安卓模拟器玩家完美验证,技 ...
- android opengl版本太低,安卓模拟器opengl_安卓模拟器无法安装“系统opengl版本过低”的通用解决方法_安卓模拟器通用版_通用安卓模拟器...
安卓模拟器无法安装"系统opengl版本过低"的通用解决方法 在安装安卓模拟器时,出现"系统opengl版本过低",下图提示,说明你的显卡暂不支持模拟器: 遇到 ...
- android10和11,安卓10与安卓11究竟差异在哪里?我们拿这两台新机试了一下
原标题:安卓10与安卓11究竟差异在哪里?我们拿这两台新机试了一下 9 月 24 日,OPPO 带着全新的 ColorOS 11 与我们正式见面,这一基于安卓 11 底层深度打造的新系统给我们带来了不 ...
- 安卓SDK和安卓版本的对应关系
安卓SDK和安卓版本的对应关系 Android 14 SDK API level 34 Android 13 SDK API level 33 Android 12L ...
- android8.1官方下载,【安卓市场】安卓市场app官方下载 v7.8.1.81 手机版-七喜软件园...
安卓市场app是一款手机应用安装下载的平台.在这款软件上面,有上万款软件跟游戏供你下载.它功能强大,下载软件没有复杂操作,只需要点击下载就能够下载软件并且帮助你自动安装软件.还有一个超级强大的功能就是 ...
- UI设计师不可不知的安卓屏幕知识-安卓100分享
http://www.android100.org/html/201505/24/149342.html UI设计师不可不知的安卓屏幕知识-安卓100分享 不少设计师和工程师都被安卓设备纷繁的屏幕搞得 ...
最新文章
- Python基础语法06--文件
- LeetCode Reverse Linked List II
- (转)Eclipse平台技术概述
- oracle把时间段转换成每一天_在家办公难适应?来看看专职外汇交易员的一天
- C语言实现大数据除法
- android创建构建方法,Android 应用程序构建实战+原理精讲
- 正则表达式 正整数_史上最全的正则表达式 (1) -- 校验数字的表达式
- 把博客园自己博客皮肤改了下
- iOS WebView生成长截图的第三种解决方案
- android app运行显示两个图标
- 轻松掌握namedtuple
- cdr软件百度百科_cdr软件是什么?cdr是什么软件?
- office图标空白异常解决方法
- 计算机知识论,计算机科学与技术中的系统论与辩证法
- 如何编辑styleGAN生成的图像的属性
- Hadoop2.x Yarn作业提交(客户端)
- 2016虾神封箱:虾神的空间统计书单
- mac蓝牙鼠标总是自己断开_解决 mac 蓝牙鼠标、键盘经常总是 断开连接的问题
- 【判断是前端bug还是后端bug】
- 解决乱码的方法(转)