Android-UI控件-BaseAdapter

Android控件(示例) Android控件使用示例。 阅读详情

BaseAdapter方法
getCount : 要绑定的条目的数目,比如格子的数量
getItem : 根据一个索引(位置)获得该位置的对象
getItemId : 获取条目的id

getView : 获取该条目要显示的界面

public class MyBaseAdapter extends BaseAdapter {
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View

convertView, ViewGroup parent) {
return null;
}
}

首先在MyBaseAdapter中添加super()方法,用来将数据源

传入MyBaseAdapter中。其中this.data = data;的意思是

将传入的形参赋值给我们的私有变量以供使用。mContext

是在后面要调用到
private String[] data;
private Context mContext;
public MyBaseAdapter(Context mContext, String[]

data) {
super();
this.mContext = mContext;
this.data = data;
}

然后就可以将getCount的返回值修改为我们的数据源的长

度,要显示几个条目,我们就传入多长的数据源就可以
public int getCount() {
return data.length;
}

接着将getView的方法改为显示出我们数据源的字符串
public View getView(int position, View

convertView, ViewGroup parent) {
TextView textView = new TextView(mContext);
textView.setText(data[position]);
return textView;
}

这里为每一个条目新建一个TextView用来显示字符串,新

建的时候就需要传入一个Context,就用到了我们之前的

mContext。
这样我们就可以使用MyBaseAdapter来显示一

个字符串数组了。不过还需要在前面修改一下,在新建

mBaseAdapter的时候要传入context和数据源

String[] strings = {“a”,“b”,“c”};
MyBaseAdapter mBaseAdapter = new MyBaseAdapter

(getApplicationContext(),strings);

代码:
MainActivity部分

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.widget.ListView;

public class MainActivity extends

AppCompatActivity {

private ListView listView;

@Override

protected void onCreate(Bundle 

savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listView = (ListView) findViewById(R.id.listView);

    String[] strings = {"a","b","c"};
      

  MyBaseAdapter mBaseAdapter = new 

MyBaseAdapter(getApplicationContext(),strings);

        listView.setAdapter(mBaseAdapter);

}

}

MyBaseAdapter部分
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class MyBaseAdapter extends BaseAdapter {
private String[] data;
private Context mContext;
public MyBaseAdapter(Context mContext,

String[] data) {
super();
this.mContext = mContext;
this.data = data;
}
@Override
public int getCount() {
return data.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View

convertView, ViewGroup parent) {
TextView textView = new TextView

(mContext);
textView.setText(data[position]);
return textView;
}
}

BaseAdapter进阶使用

首先新建一个layout,我命名为item,这个就是我们每个

条目要展示的布局

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/

android"

xmlns:app="http://schemas.android.com/apk/res-

auto"

  android:orientation="horizontal" 

android:layout_width=“match_parent”

  android:layout_height="match_parent">
  
  <ImageView
      
  android:layout_width="wrap_content"
      
  android:layout_height="wrap_content"
     


  app:srcCompat="@mipmap/ic_launcher"
      
  android:id="@+id/imageView" />
  
  <Button
      
  android:text="Button"
      
  android:layout_width="wrap_content"
      
  android:layout_height="wrap_content"
     


  android:id="@+id/button" />
  
  <TextView
      
  android:text="TextView"
      
  android:layout_width="wrap_content"
      
  android:layout_height="wrap_content"
     


  android:id="@+id/textView" />

接下来修改getView方法,让它显示我们这个item布局
public View getView(int position, View

convertView, ViewGroup parent) {
LayoutInflater inflater =

LayoutInflater.from(mContext);
View view = inflater.inflate

(R.layout.item,null);
final TextView textView = (TextView)

view.findViewById(R.id.textView);
Button button = (Button) view.findViewById

(R.id.button);
ImageView imageView = (ImageView)

view.findViewById(R.id.imageView);
imageView.setImageResource

(R.mipmap.ic_launcher);
button.setOnClickListener(new

View.OnClickListener() {
@Override
public void onClick(View v) {
textView.append("!");
}
});
textView.setText(data[position]);
return view;
}
LayoutInflater是用来加载布局的,用LayoutInflater的

inflate方法就可以将你的item布局绘制出来。其中

getView方法中的三个参数,position是指现在是第几个

条目;convertView是旧视图,就是绘制好了的视图;

parent是父级视图,也就是ListView之类的。
用inflate

方法绘制好后的view最后return返回给getView方法
BaseAdapter的优化使用

convertView是旧视图就是listview如果超出了屏幕,滑

动的时候会隐藏掉一部分,这时候就将隐藏掉的部分保存

到convertView中

首先定义一个类ViewHolder,用来标记我们的控件
static class ViewHolder{
TextView textView;
ImageView imageView;
Button button;
}

使用ViewHolder优化
public View getView(int position, View

convertView, ViewGroup parent) {
LayoutInflater inflater =

LayoutInflater.from(mContext);
ViewHolder holder = null;
if (convertView == null) {
convertView = inflater.inflate

(R.layout.item, null);
holder = new ViewHolder();
holder.button = (Button)

convertView.findViewById(R.id.button);
holder.textView = (TextView)

convertView.findViewById(R.id.textView);
holder.imageView = (ImageView)

convertView.findViewById(R.id.imageView);
convertView.setTag(holder);
} else {
holder = (ViewHolder)

convertView.getTag();
}
holder.imageView.setImageResource

(R.mipmap.ic_launcher);
holder.button.setOnClickListener(new

View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(“click”,“button”);
}
});
holder.textView.setText(data[position]);
return convertView;
}
先判断convertView是否为空,是的话就创建ViewHolder

,不是的话就取出ViewHolder,这样就可以实现复用

convertView了。

《我的Classic Platform AUTOSAR之路》 BSWM 模式管理(二)ESH 只有 PostRun 和 wakeup 才能切换到 RUN,其他状态需要先切换到 wakeup 模式。进入 RUN 模式需要打开通信 allow,退出 Run 需要 disable 通信 allow。Prepareshut 与 dem_shutdown 绑定,如果没有 dem 配置,不会生成。除了 Init 模式下,其他模式下都要检查 ECU 的唤醒源和通信 pending 需求。与 ECUM 相关,整个 ECU 状态管理的状态机制。postrun 可以不配置,需要根据自己的需求使能。 阅读详情

相关推荐

说说PSTN、ISDN、 ADSL三种互联网接入方式的区别。

互联网的接入方式: 电话拨号接入(PSTN) ISDN接入 ADSL接入 Cable MODEM接入 局域网接入 光纤接入(FDDI) 卫星接入 DDN专线 目前来说,ADSL和Cable MODEM比较常用,今天我们就先来说说PSTN、ISDN和ADSL的区别。 电话拨号接入(PSTN/POTS,Public Switched Telephone Network / Public Oold Telephone Service) 数据终端设备(DTE)通过数据通信设备(DCE)再连

Winyaz的博客 2万+

Android项目之HomeHealth基础学习1:Baseadapter

重写Baseadapter时,我们知道需要重写以下四个方法:getCount,getItem(int position),getItemId(int position),getView方法, getCount决定了listview一共有多少个item,而getView返回了每个item项所显示的view。 可是getItem(int position),getItemId(int positi

嵌入式技术在路上 1076

从透射谱到能量分布:用Rsoft破解光纤光栅耦合模式的3个关键技巧

本文面向光通信工程师与研究者,分享了利用Rsoft软件深入分析光纤光栅耦合模式的三个关键技巧。通过配置场监视器观察XY截面能量分布、利用传播动画追踪动态过程,并结合模式求解器精准判定相位匹配,帮助用户超越透射谱分析,直观可视化能量从纤芯到包层的耦合与流动,从而优化器件设计。

weixin_29290963的博客 422

android中Baseadapter的 getItem 和 getItemId 的作用和重写

http://www.tuicool.com/articles/aqa2u2Q

afunyusong的专栏 522

智能驾驶域控制器的“终极大考”:解析EOL测试的核心价值与技术实践

在智能驾驶技术高速发展的今天,域控制器(Domain Controller)作为车辆“大脑”的核心部件,承担着传感器数据处理、决策规划、执行控制等关键任务。然而,这个集成了数十个芯片、运行着数百万行代码的复杂系统,如何确保其出厂前的功能安全与性能稳定?答案就藏在被称为“生产线最后一道防线”的EOL(End of Line)测试中。

汽车电子软件领域知识分享 704

基于Simulink的双向DC-DC变换器在储能系统中的应用仿真

摘要:本文详细介绍了基于Simulink的双向DC-DC变换器在光伏储能系统中的仿真实现。主要内容包括:1)采用非隔离型双向Buck-Boost拓扑作为储能系统枢纽;2)针对750V直流微网中的20kWh锂电池接口场景进行建模;3)详细阐述双闭环控制器设计(电压外环+电流内环)、工作模式判断逻辑等关键步骤;4)通过仿真验证了系统在功率阶跃和模式切换下的性能。文章提供了完整的建模流程和控制方法,为储能系统接口设计提供了实用参考。

amy_mhd的博客 179

Android BaseAdapter

BaseAdapter 当一个ListView设置了Adapter后,每次ListView刷新显示时会调用getCount()来确定需要显示的条目个数,然后重复调用getView(…)获取指定位置的View并绘制到指定位置上。 方便起见,一般列表中每个条目里包含的View在获取时都会从布局文件得到(如LayoutInflater的inflate(…)方法)。 由于每个条目中的view一般都会包含多个

a85809291的博客 467

Unity Hololens2开发|(一)环境配置

开发过程中预览和调试应用:可以在电脑上的 Unity 编辑器中以播放模式本地运行应用,并将体验流式传输到 HoloLens2。将来自 HoloLens2 的输入(视线、手势、语音和空间映射)发送到电脑,在其中内容以虚拟沉浸式视图渲染。在HoloLens2设备中,打开Settings面板,依次选择Update & Security > For Developers,打开“Developer Mode”。在开发计算机中打开控制面板,依次选择“更新和安全> 开发者选项”,打开“开发人员模式”;

游戏开发小Y的博客 14万+

BaseAdapter实现ListView中item上每个控件的获取以及点击

借鉴这位大神的代码,自己稍微修改了一下(其实也没改多少),把源码出来大家看看,刚开始学习android,有很多不懂的地方,望大家多多指教 先来一张效果图,点击任何一个button,获取button的值,具体动作,大家可以自行修改 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/

xiao333ma的专栏 5499

TMF8801 ToF激光测距传感器原理图设计,已量产(距离传感器)

这张 TMF8801 小板的外围结构就很有代表性。核心传感器是 U1 TMF8801,但真正构成量产价值的是外围那一圈:U2 把 VCC 整理成 3V,R1/R2/R5 与 R3/R4/R6 两组 10K 电阻稳定默认态,Q2 2N7002 和 U3 SN74LVC2G07DCKR 处理控制链路,传感器边上还有 C1/C4/C5 三颗 100nF 紧贴去耦。

不脱发的程序猿 159

【2026华为OD新规机考】最新套题持续更新【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】

可上练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【优快云】否则不通过)

weixin_48157259的博客 508

baseadapter.getItemId的使用方法:实现listview筛选、动态删除

这里的listview筛选是指listview的adapter实现filter来过滤数据。 “动态删除"是指,使用filter筛选数据后,对筛选后的数据的删除操作,实际上是对筛选前的数据产生影响。 实现目标:举例来说: Listview原来显示:1,2,3,4,5,6,11,12,13,14 使用filter筛选“1”后显示:1,11,12,13,14 此时我选中11(第二项),

Kw学编程 2751

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android UI高级控件之自定义Adapter(继承BaseAdapter)

一.编写自定义控件的步骤: 1.编写一个类,继承BaseAdapter或者它的子类 2.重写4个抽象方法: getCount():返回数据源中元素的个数 getItem(int position):返回指定索引处的条目(或元素) getItemId(int positoin):返回行号 getView(int positon,ConvertView,ViewGroup parent):

FightFightFight的博客 1295

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android开发-UI控件:实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter。

其实实现ListView过滤功能最方便的便是使用ArrayAdapter,里面自带的getFilter()方法能很方便的实现此功能,但是在实际的开发中,一般都是继承于BaseAdapter。还有一种是利用控件AutoComplete,这种方式只是在输入框的下方重新显示一个列表,显然,很多时候这两种方式也满足不了我们的要求。 在Activity中定义一个类,让它实现TextWatcher接口,

重剑无锋,大巧不工 566

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android用户界面之常用控件BaseAdapter 、事件后退处理 2018/8/14am

事件后退处理 if (lastClickTime &amp;lt;= 0) { Toast.makeText(this, &quot;再按一次后退键退出应用&quot;, Toast.LENGTH_SHORT).show(); lastClickTime = System.currentTimeMillis(); } else { ...

weixin_42904092的博客 238

Android基础类之BaseAdapter

BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter, 1、Adapter类简介 1)、Adapter相关类结构如下图所示: 自定义Adapter子类,就需要实现上面几个方法,其中最重要的是getView()方法,它是将获取数...

weixin_30502157的博客 101

安卓开发学习进阶——Adapter

安卓开发学习进阶——Adapter android Adapter剖析理解 UI控件都是跟Adapter(适配器)打交道的 Adapter: 是用来帮助控件填充数据的中间桥梁 (在开发中大多数Textview控件的内容是依靠数据库传递并显示的如:新闻类) Adapter: 将各种数据以合适的形式显示到view上 (我是显示图片的控件,你给我传文字是不是不想好了,分手!) Adapter:需要结合ListView, GridView等等集合类控件 (List 在学习java集合时应该已经碰到过

qq_41853615的博客 473

【Android基础】(9)UI控件(三)

今天我们来UI控件的最后一篇。 一 ImageSwitcher ImageSwicher图片切换控件,xml: <ImageSwitcher android:id="@+id/imageSwitcher1" android:layout_width="

scarthr的专栏 705

GitHub上受欢迎的Android UI Library

好东西要共享出来!!

cuiyufeng的专栏 1812

arrayadapter simpleadapter baseadapter

android Adapter剖析理解 UI控件都是跟Adapter(适配器)打交道的Adapter: 是用来帮助控件填充数据的中间桥梁 (在开发中大多数Textview控件的内容是依靠数据库传递并显示的如:新闻类)Adapter: 将各种数据以合适的形式显示到view上 (我是显示图片的控件,你给我传文字是不是不想好了,分手!)Adapter: 需要结合ListView, Gr

爱吃冰淇凌的羊驼 432

【从头学android】学习使用Gallery画廊和BaseAdapter

1.java/** * */ package com.itest; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import a

Robin的专栏 1161

Android速成day06-高级控件

本文介绍了安卓开发中常用的UI组件和功能,包括下拉框(Spinner)、适配器(Adapter)、列表视图(ListView)、翻页视图(ViewPager)和Fragment的使用方法。通过示例讲解如何实现数据绑定、动态列表展示、页面滑动切换以及模块化界面设计,帮助开发者快速掌握这些核心技术的应用。适合安卓初学者学习和参考。

1179

基于Android移动应用开发,实现通讯录创建联系人(二)

本文介绍了基于Android Studio开发的一个联系人管理系统,使用Java语言和SQLite数据库实现数据持久化。系统功能包括联系人增删改查,通过ListView展示数据,BaseAdapter实现数据绑定。UI方面采用LinearLayoutCompat布局,包含添加联系人页面(activity_add_student_info.xml),提供姓名和手机号输入框。用户可通过长按实现拨号或删除,点击可修改联系人信息。开发环境要求JDK 8.0+,主要技术点涉及SQLite数据库操作、ListView控

商城app+新闻app+备忘录记事本app视频教程在某站【浩宇软件开发】 1808

【Android】UI-----Adapter适配器基础讲解

java设计模式:建造者模式-Builder模式。Android用于提示信息的一个控件。

byadom_IT的博客 461

2.5 UI组件-AdapterView及子类(疯狂android学习笔记)

学习《疯狂android》的笔记,方便以后增加其他笔记!

void_main1的博客 676
上一篇: Android-ListView
下一篇: Android-UI控件-GridView
Android_xi
博客等级 码龄8年 4粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值