android 之UI 高级控件Adapter(适配器详解)
了解适配器组件:
适配器是一个连接数据源和AdapterView的桥梁,通过它能有效的实现数据源与AdapterView的分离设置,使AdaptereView与数据的绑定更加简便,修改更加方便。
AdapterView与Adapter
1.AadapterView即Adapter(适配器)控件,其内容通常是一个包含多项相同格式资源的列表,每次只显示其中的一项。
2.需要先把多项内容放入一个列表,然后将这个列表加载到Adapter控件中。
3.这个存放Adapter控件的内容的列表,在Android将称为Adapter(适配器对象)。
数组适配器对象具体配对过程:
实例代码:
前台展示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/listView_names"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/textView_empty"/></LinearLayout>
后台逻辑:
package com.example.lenovo.adapter_demo;import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {//寻找控件private ListView listView_names;private TextView textView_empty;/***数据源*/private List<String> data = new ArrayList<>();/***适配器对象*/private ArrayAdapter<String> adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.listView_names = (ListView) this.findViewById(R.id.listView_names);this.textView_empty = (TextView) this.findViewById(R.id.textView_empty);//设置当ListView 控件中条目为空时显示的View对象this.listView_names.setEmptyView(this.textView_empty);/*//第一种方式:String[] data = {"李云龙","楚云飞","张三","李四"};ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,//上下文对象android.R.layout.simple_list_item_1,//控件每一行显示内容对应的TextView控件对象data//数据源);//设置适配器对象this.listView_names.setAdapter(adapter);*//*//方式二:数据源时集合,数据源通过调用适配器对象的addAll()方法添加到适配器对象中List<String> data = new ArrayList<>();for(int i = 0;i < 5;i++){data.add("向往"+i);}adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);*/
/*//方式三:通过调用ArrayAdapter 的静态方法创建数组适配器对象(需要自己在res中添加xml文件)ArrayAdapter<CharSequence> adpter = ArrayAdapter.createFromResource(this,R.array.country,//数据源对应的资源id值android.R.layout.simple_list_item_1);*///注册ListView条目点击监听器对象this.listView_names.setOnItemClickListener(new AdapterView.OnItemClickListener() {/*** 当ListView 条目被点击时自动执行的方法* @param parent 事件源,当前就是ListView控件对象* @param view 用户点击条目对应的TextView控件对象* @param position 用户点击条目控件对应的索引值,索引从0开始* @param id 行号,一般和position相等* 需求:得到用户点击条目对应的内容*/@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {//方式一:通过数据源中的索引值和ListView 控件中条目的索引值一一对应的关系获取数据//String item = data.get(position);//方式二:通过调用适配器对象的getItem(position)获取数据//String item = adapter.getItem(position);//方式三:通过调用适配器控件对象的getItemAtPosition(position)方法获取数据//String item = parent.getItemAtPosition(position).toString();//方式四:通过用户点击条目对应的控件对象获取数据String item = ((TextView)view).getText().toString();Toast.makeText(MainActivity.this,"item="+item,Toast.LENGTH_LONG).show();System.out.println("===OnItemClick(AdapterView<?> parent="+parent+",View view="+view+",int position="+position+",long id ="+id+")====");}});//注册长按ListView_names.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){/*** 当用户长按ListView 控件对象条目时自动调用的方法* @param parent 事件源,当前就是ListView控件对象* @param view 用户点击条目对应的TextView控件对象* @param postion 用户点击条目控件对应的索引值,索引从0开始* @parm id 行号,一般和postion相等* @return 如果事件被消费则返回true,相反则返回false*//* @Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {//删除用户点击条目对象data.remove(position);adapter.notifyDataSetChanged();//更新用户界面System.out.println("=====onItemLongClick(AdapterView<?> parent="+parent+", View view="+view+", int position="+position+", long id="+id+")=====");return true;//事件是否被消费掉,如果消费掉则返回true,此时就不会在触发OnItemClick 方法了}});*/}
}
android 之UI 高级控件Adapter(适配器详解)相关推荐
- android使组件居中,Android图文居中显示控件使用方法详解
最近项目中用到了文字图标的按钮,需要居中显示,如果用TextView实现的方式,必须同时设置padding和drawablePadding.如下: android:layout_width=" ...
- android点击展开全文,Android显示全文折叠控件使用方法详解
一般列表里文字太多的一个折叠效果的空间,效果图如下. 当文字超过设定的行数后就折叠,小于设定行数不显示展开按钮.下面上代码. 先看布局文件: android:layout_width="wr ...
- Android高级控件----AdapterView与Adapter详解
在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...
- RecyclerView高级控件-附实例【android专题】
RecyclerView高级控件 RecyclerView是Android 及其重要的一个高级UI控件,使用频率及其的高,APP的90%以上的页面都会使用的到.由于其出色的性能和插拔式的架构设计,被全 ...
- 《移动项目实践》实验报告——Android高级控件
实验目的 1.熟悉App开发常用的一些高级控件及相关工具,主要包括日期时间控件的用法.列表类视图及其适配器的用法.翻页类视图及其适配器的用法.碎片及其适配器的用法等: 2.熟悉四大组件之一广播Broa ...
- Android从入门到进阶之高级控件
高级控件 1.自动完成文本控件 在搜索引擎(百度.搜狗)输入几个文字,会出来一些提示.可以减少用户的输入,提高程序的效率.刚才看到的自动提示,ajax技术. 1.1AotoCompleteTextVi ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第八章:高级控件
本章介绍了App开发常用的一些高级控件用法,主要包括:如何使用下拉框及其适配器.如何使用列表 类视图及其适配器.如何使用翻页类视图及其适配器.如何使用碎片及其适配器等.然后结合本章所学 的知识,演示了 ...
- Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能
Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...
- Android 高级控件(七)——RecyclerView的方方面面
Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...
最新文章
- 吴恩达老师深度学习视频课笔记:卷积神经网络
- Thread.sleep(0):线程休眠0秒有什么意义!
- docker用gpu的参数_从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制
- Excel如何快速将科学计数法数字变成正常形式
- 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端
- 没有bug队——加贝——Python 49,50
- matlab中关于程序运行的快捷键
- px~em~pt转换表
- MySQL的SQL 语句:根据从表记录个数对主表排序
- Python:time库使用方法
- 海康相机回调方式理一下
- 【李宏毅2020 ML/DL】P35-42 Attack ML Models
- NPC问题及其解决方法
- 公司为什么需要自己的SAP内部顾问
- locality sensitive hashing(LSH)原理和具体实现
- 数据库系统概论(第七章:数据库设计)
- 常见漏洞知识库(原理/场景/修复)
- 计算机组成原理笔记[哈工大]
- 微信企业号开发之 企业号人员身份认证与开发
- C# winForm 定时拷贝覆盖文件小工具