了解适配器组件:

适配器是一个连接数据源和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(适配器详解)相关推荐

  1. android使组件居中,Android图文居中显示控件使用方法详解

    最近项目中用到了文字图标的按钮,需要居中显示,如果用TextView实现的方式,必须同时设置padding和drawablePadding.如下: android:layout_width=" ...

  2. android点击展开全文,Android显示全文折叠控件使用方法详解

    一般列表里文字太多的一个折叠效果的空间,效果图如下. 当文字超过设定的行数后就折叠,小于设定行数不显示展开按钮.下面上代码. 先看布局文件: android:layout_width="wr ...

  3. Android高级控件----AdapterView与Adapter详解

    在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...

  4. RecyclerView高级控件-附实例【android专题】

    RecyclerView高级控件 RecyclerView是Android 及其重要的一个高级UI控件,使用频率及其的高,APP的90%以上的页面都会使用的到.由于其出色的性能和插拔式的架构设计,被全 ...

  5. 《移动项目实践》实验报告——Android高级控件

    实验目的 1.熟悉App开发常用的一些高级控件及相关工具,主要包括日期时间控件的用法.列表类视图及其适配器的用法.翻页类视图及其适配器的用法.碎片及其适配器的用法等: 2.熟悉四大组件之一广播Broa ...

  6. Android从入门到进阶之高级控件

    高级控件 1.自动完成文本控件 在搜索引擎(百度.搜狗)输入几个文字,会出来一些提示.可以减少用户的输入,提高程序的效率.刚才看到的自动提示,ajax技术. 1.1AotoCompleteTextVi ...

  7. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第八章:高级控件

    本章介绍了App开发常用的一些高级控件用法,主要包括:如何使用下拉框及其适配器.如何使用列表 类视图及其适配器.如何使用翻页类视图及其适配器.如何使用碎片及其适配器等.然后结合本章所学 的知识,演示了 ...

  8. Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能

    Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...

  9. Android 高级控件(七)——RecyclerView的方方面面

    Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...

最新文章

  1. 吴恩达老师深度学习视频课笔记:卷积神经网络
  2. Thread.sleep(0):线程休眠0秒有什么意义!
  3. docker用gpu的参数_从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制
  4. Excel如何快速将科学计数法数字变成正常形式
  5. 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端
  6. 没有bug队——加贝——Python 49,50
  7. matlab中关于程序运行的快捷键
  8. px~em~pt转换表
  9. MySQL的SQL 语句:根据从表记录个数对主表排序
  10. Python:time库使用方法
  11. 海康相机回调方式理一下
  12. 【李宏毅2020 ML/DL】P35-42 Attack ML Models
  13. NPC问题及其解决方法
  14. 公司为什么需要自己的SAP内部顾问
  15. locality sensitive hashing(LSH)原理和具体实现
  16. 数据库系统概论(第七章:数据库设计)
  17. 常见漏洞知识库(原理/场景/修复)
  18. 计算机组成原理笔记[哈工大]
  19. 微信企业号开发之 企业号人员身份认证与开发
  20. C# winForm 定时拷贝覆盖文件小工具

热门文章

  1. LINUX使用tcgetattr函数与tcsetattr函数控制终端二
  2. 近端策略优化深度强化学习算法
  3. Spark SQL玩起来
  4. showSoftInput不起作用
  5. 万能的Entry,两个变量的Model/JavaBean再也不用写了!
  6. 菜鸟学自动化测试(四)----selenium 命令之验证页面元素
  7. 黄聪:C# 开发Chrome内核浏览器(WebKit.net)
  8. 使用Axure制作无限循环展示图片效果
  9. 企业运维之域控篇(九)--辅助域强制占用后的操作--清除数据
  10. 移动游戏高速增长为市场营销带来新的机会