Android菜鸟日记20 - ListView

Android菜鸟日记
20 ListView

ListView之前已经在布局那篇写过了 后来发现这个系统自带的功能还是比较多的 很多东西完全不用自己来弄。

首先是上次写的
10.ListView 列表控件 [重点且相对复杂]

作用:列表显示信息内容
解释:
封装listView到activity的ListACtivity
Listview中的每行信息都是一个hashmap对象
Hashmap中存放<string ,string>的键值对
再把每个hashMap存入arraylist对象。
arraylist对象作为数据源备用。
listActivity需要自己的布局文件(废话 下面一句是重点)
listActivity 是需要设置适配器的
SimpleAdapter listAdapter = new SimpleAdapter(this,list,R.layout.main3,new String[]{"name","age","sex"},new int[]{R.id.tx,R.id.tx2,R.id.tx3});

SDK:
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)

//Context context 上下文 也就是this
//List<? extends Map<String, ?>> data 数据源 也就是 ArrayList对象
//int resource 每行的布局文件,控制每行的布局
// String[] from 每行中需要显示的数据的键 组成的数组
// int[] to 前面需要显示的键值 对应显示的控件。
设置完设置适配器后需要this.setListAdapter(listAdapter)
把适配器设置到listactivity上。
适配器(Adapter):用于把资源与其他对象对接
Ex:把几个参数适配成一个对象。以方便使用。

在布局文件中写入listview
<ListView
android:id="@id/android:list"//
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical"
/>


监听:
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
}
可以在listactivity中写onListItemClick方法设置监听。
ListView l: listview控件对象
View v : 被点击的控件对象(2011-8-13时只知道是选择一行一行的)
int position:被点击控件位置
long id : 被点击控件位置ID
[关于id和position(位置)的思考]
Id是自然不变的 是1就是1 但是位置可变的 如果我把第二行拖到了第一行ID为改变但位置position改变了


这次的:

上面传入的adapter是simpleAdapter
其实一些简单的不需要如此麻烦
直接传入ArrayAdpater即可了
New ArrayAdapter(Context ct,布局方式,String [] data);
布局方式是通过R.layout.XXX
或者调用系统本身的 android.R.layout.xxx
Android系统中几个自带的比较常用的

android.R.layout.simple_list_item_single_choice


android.R.layout.simple_list_item_multiple_choice


android.R.layout.simple_list_item_checked

android.R.layout.simple_list_item_1



通过下面对适配 给list的适配器更加理解
package com.lurencun.TestRoom;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter {

private List list = new ArrayList();
private Context ct=null;

public MyAdapter(Context ct)
{
this.ct=ct;
Log.v("myTag", "list.size"+list.size());

}

public int getCount() {
// TODO Auto-generated method stub
return list.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

public void addString(String temp) {
list.add(temp);
this.notifyDataSetChanged();
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// String inflater = Context.LAYOUT_INFLATER_SERVICE;
// LayoutInflater layoutInflater = (LayoutInflater) ct
// .getSystemService(inflater);
//
// //从系统获得布局填充器
// LinearLayout linearLayout = null;
//
//
// linearLayout = (LinearLayout) layoutInflater.inflate(
// R.layout.test, null);
// //布局填充器使用R.layout.test并返回使用填充器的布局
// TextView textView = ((TextView) linearLayout
// .findViewById(R.id.t_tx1));
// textView.setText(String.valueOf(list.get(position)));
//

TextView w=new TextView(ct);
w.setText(String.valueOf(list.get(position)));

return w;
}

}
getView中肯定要返回一个view

一、如果想使用布局文件的东西[R.layout.xxxx]

简单的说 通过布局文件填充器把布局文件转换成view

就需要使用到layoutInflater:布局填充器
layoutInflater需要从系统服务中获取
// LayoutInflater layoutInflater = (LayoutInflater) ct
// .getSystemService(inflater);

获取之后再通过layoutInflater的inflate方法 把所要用的布局填充进去。此方法返回填充的view[也就是填充的布局文件的view]。把此view强转成自己要用的。
然后对此view操作。
最后返回此view。

二、如果不使用布局文件
则直接创建相应的view 然后返回该对象即可。

注意:列表项的view 一定要在getView方法中创建。


2011-9-23
poolo
软件设计师考试下午题代码部分详解:23种设计模式全面解析 软件设计师考试的下午题通常会考察设计模式的应用,这部分内容既是重点也是难点。本文将系统地介绍考试中常见的23种设计模式,通过详细代码示例和通俗易懂的讲解,帮助考生掌握这些核心知识点,提高应试能力。概念:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。适用场景:系统要独立于产品的创建、组合和表示时;系统要由多个产品系列中的一个来配置时。@Override@Override@Override@Override// 产品族A@Override。 阅读详情

相关推荐

Zemax实战:5步搞定牛顿望远镜光学设计(附球差优化技巧)

本文详细介绍了在Zemax OpticStudio中构建高精度牛顿望远镜光学系统的5步实战流程,包括初始参数设置、球差优化、折叠镜与遮光面配置等关键步骤。特别针对球差问题,提供了将主镜圆锥系数设为-1的优化方案,有效消除轴上弥散斑。通过3D视图和MTF分析验证,该系统可实现接近衍射极限的成像质量,适合天文观测等应用场景。

x8y9z0的博客 926

菜鸟学习android之ListView

注:本文只是一个学习笔记 用以记录自己学到哪了 ①先上个简单点的ListView public class ListViewActivity extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan...

mmdev 207

SAP Business One自定义表与字段实战:从零构建企业专属数据模型

本文详细介绍了如何在SAP Business One中创建自定义表与字段,从零构建企业专属数据模型。通过实战案例和避坑指南,帮助用户掌握业务适配、流程优化和权限隔离等关键技巧,提升系统灵活性和数据管理效率。特别适合需要扩展标准功能的SAP Business One用户。

weixin_28730927的博客 359

现在我是菜鸟——ListView

1、简单的ListView 布局中加入控件 mainActivity中准备好要展示的数据,然后需要用适配器将数据传递给Listview。适配器用ArrayAdapter。最后setAdpater(ArrayAapter adapter)就可以将数据显示在程序里。 2、定制ListView的界面 在布局中制定好需要的资源, ①新建类,自定义一个适配器extends ArrayAdapter

轻水与猫的博客 220

保姆级教程:用PyBullet和Stable-Baselines3搞定你的第一个机器人强化学习项目

本文提供了一份详细的PyBullet和Stable-Baselines3教程,帮助开发者快速上手机器人强化学习项目。通过环境配置、自定义Gym环境构建、PPO算法参数优化及模型部署的全流程解析,读者将掌握从零开始训练四足机器人 locomotion 任务的完整技术方案。

weixin_26861329的博客 420

EWM与SAP ERP的数据集成

1、EWM与 SAPERP的无缝集成-基础数据&业务交易数据 2、SAP ERP设置:连接SAP ERP和EWM必须设置应用程序连接支持-ALE(Application Link Enabling) 3、ERP - EWM仓库数据集成: SAP ERP需要设置配置信息,连接ERP和EWM之间的库存管理应用,基于工厂+库存地点对应一个仓库号来进行配置; 在ERP中需要创建一个中间虚拟仓库,代表ERP仓库;“中间虚拟”仓库创建之后,工厂+库存地点的信息...

weixin_43899798的博客 3795

Flutter的菜鸟教程四:ListView

本文学习一下列表widget,是最常见的需求 在Flutter中,用ListView来显示列表项,支持垂直和水平方向展示,通过一个属性我们就可以控制其方向 1.水平的列表 2.垂直的列表 3.数据量非常大的列表 4.内置的ListTile(挺好用的) 4.内置的ListTile(挺好用的),先看下这个widget,在下面的listView中将直接使用 /** * ListTil...

duo_shine的博客 2万+

Pascal Context数据集实战:从安装到格式转换的完整指南

本文提供了Pascal Context数据集的完整实战指南,从安装配置到格式转换的详细步骤。Pascal Context是计算机视觉领域重要的语义分割数据集,包含540个精细标注类别。文章涵盖数据集下载、环境配置、预处理技巧和常见问题解决方案,帮助开发者高效利用这一数据集进行场景理解任务。

weixin_30216561的博客 616

设置监听器

设置普通监听器 class XXX implements OnClickListener{ @Override public void onClick(View v){ … … } } 设置ListView的监听器 protected void onListItemClick(ListView l, View v, int position, lo...

Tony的攻城学习笔记 170

AI Agent Harness自动化漏洞扫描

本文要介绍的AI Agent Harness自动化漏洞扫描方案,正是为了解决传统漏扫的上述痛点而生。漏洞检出率提升35%以上,逻辑漏洞检出率从不足30%提升到92%误报率从27%降到3%以下,人工复核成本降低90%支持自定义业务系统、IoT、工控等多场景资产扫描,适配成本降低80%内置反馈学习机制,扫描效果越用越好AI Agent是指具备自主感知、决策、行动能力的大模型驱动程序,它可以根据给定的目标,自主调用工具、规划步骤、完成任务。

AI 原生应用开发的博客 473

Geogebra中级篇016—矩阵(Matrices)

在GeoGebra中,矩阵是一种强大的工具,广泛应用于线性代数、几何变换和数据处理等领域。通过矩阵,我们可以轻松实现复杂的计算和图形变换,如旋转、平移和缩放等操作。不仅如此,GeoGebra的矩阵功能还支持多种运算,如加法、乘法、求逆等,使得用户能够高效地处理线性方程组和向量空间问题。在本文中,我们将深入探讨GeoGebra中的矩阵功能,详细介绍如何创建矩阵、执行常见的矩阵运算,并通过实例展示这些操作在数学和工程应用中的实际价值。这篇文章将为你提供关于GeoGebra矩阵操作的全面指南。

八荒启-交互动画的博客 2581

Android菜鸟日记 26 ListView中放置button

  Android菜鸟日记 26 ListView中放置button   ListView放置button是一个很麻烦的事情 网上说的 一般都是如何实现button 和 listView同时被点击,可视做HDEasyCall 时候更多的需要listview和button不能同时点击。   首先如果想要ListView 里面的button被点击,且listView也能...

ipoolo的专栏 372

银河麒麟操作系统最佳实践专栏介绍

本专栏聚焦国产银河麒麟操作系统(桌面版/服务器版)的实战应用,提供系统安装、配置优化、应用部署、故障排查等实用指南。内容基于真实操作场景,涵盖Linux通用技术(如RAID配置、环境变量管理)、服务器系统专项(如数据库迁移、驱动安装、安全加固)及桌面系统技巧(如PXE安装、镜像封装)。面向IT运维、开发者和国产化转型人员,突出实战性和差异化,帮助用户规避常见问题,提升系统管理效率。所有教程均配有详细步骤和截图,确保可操作性,并持续更新适配新版系统。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 531

Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!

Android实训案例(三)——实现时间轴效果的ListView,加入本地存储!>感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲的是时间轴的实现,说实话,其实就是listview的偷梁换柱,本来我会在写listview这个系列的时候写的,但是最近自己写的一个项目《Only》上用到了,很多群友说也想看看怎么实现的,独乐乐不如众乐乐,所以就提前先来分享

刘桂林的博客 4620

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android listview 滑动条显示_Android菜鸟日记(4.10)

昨天的问题是用了ExpandableListView控件但是不显示问题,今天一检查有很多细小的问题……比如设的私有变量名字写错了,导致有问题的方法给注释了等等……不过这些都修正了还是不能加载出数据。 这里再重新提一下原来的是用在activity中的我给换到fragment里了,把对应的方法所在的生命周期也都改了还是不行。估计是有的语句只能在activity中写吧,以后有机会找一下具体哪些不能...

weixin_39859394的博客 199

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

combobox 怎么实现对listview的类别查询_Android之ListView实现本地存储,实现恋爱日记的效果...

感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲的是时间轴的实现,说实话,其实就是listview的偷梁换柱,本来我会在写listview这个系列的时候写的,但是最近自己写的一个项目《Only》上用到了,很多群友说也想看看怎么实现的,独乐乐不如众乐乐,所以就提前先来分享,说说listview,这可是一个名角,在android上很受欢迎,也很实用,当...

weixin_39905037的博客 149

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!...

Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲的是时间轴的实现,说实话,其实就是listview的偷梁换柱,本来我会在写listview这个系列的时候写的,但是最近自己写的一...

weixin_33831673的博客 212

Android菜鸟日记28-listView下拉更新[仿新浪微博]

  Android菜鸟日记 28 listView下拉更新[仿新浪微博]   老用ios的下拉刷新 觉得用户体验很好 考虑自己做一个 本来以为是使用slidingDrawer 弄了半天才发现不是。 在网上收集了下资料,找到个还不错的[附件有] 修改了内容做给HDEasyCall用了。   如果完全解释那个 太费时间了 还是把它当做一个控件来用吧 里面的东西别管他了。   ...

ipoolo的专栏 221

android layout textview里图片大小_Android之ListView实现本地存储,实现恋爱日记的效果...

感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲的是时间轴的实现,说实话,其实就是listview的偷梁换柱,本来我会在写listview这个系列的时候写的,但是最近自己写的一个项目《Only》上用到了,很多群友说也想看看怎么实现的,独乐乐不如众乐乐,所以就提前先来分享,说说listview,这可是一个名角,在android上很受欢迎,也很实用,当...

weixin_31710835的博客 92

android listview分区域监听,listview的监听事件

package JAVASwing;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;publi...

weixin_39862097的博客 250

iOS 多语言本地化教程,VS Code KXApp 编辑 String Catalog .xcstrings

做 iOS 多语言本地化总要在 VS Code 和 Xcode 之间来回切?这篇讲用 KXApp(快蝎)在 VS Code 里直接编辑 String Catalog(.xcstrings):双击打开和 Xcode 一样的表格,`.xcstrings` 与老的 `.strings`、`.stringsdict` 同表编辑,加语言同步登记到工程、从源码扫描同步新 key,复数、设备变体和变量占位都在表里处理,改源语言文本后已有翻译自动标需复核。文件仍是标准格式,回 Xcode 打开一致。

2501_91592143的博客 158

成为全栈·基础补充·Nginx 入门:反向代理与静态托管

Nginx 可以托管前端静态文件,也可以作为反向代理把 HTTPS 请求转给内部 API。本文从请求路径讲起,解释反向代理、静态目录、代理头、路径拼接、可信 IP、Cookie、上传体积、超时和缓存边界,并提供配置结构示例和逐层排查顺序。配置片段需要结合实际证书、路由和运行平台验证,不能直接复制为生产方案。

FungLeo's Blog 289

Android 开发入门实践(二):Kotlin 空安全,从可空类型到安全访问

延续 NewsApp 项目中的新闻标题练习,记录 Kotlin 安全调用。

Easyhood的博客 276

Android Message源码阅读

本文梳理了Android Handler机制中Message的核心设计:链表结构、消息复用池(sPool)及回收机制,重点解析了异步消息与同步屏障(SyncBarrier)的协同机制。当主线程需优先处理UI绘制等高优先级任务时,系统通过postSyncBarrier插入屏障,使Looper跳过普通同步消息,优先执行标记为异步的UI渲染任务,确保帧率流畅。该机制是保障Android界面响应性的关键技术之一。

u012116089的博客 183

指纹浏览器手机版能用吗?区分原生 App、移动网页模拟与云手机

本文说明“指纹浏览器手机版”可能指手机原生 App、远程云端浏览器、电脑模拟手机网页或云手机。通过对比运行位置与可完成的任务,提供下载前的四项核对方法,帮助读者选择适合网页操作或 Android App 的方案。

2601_96176203的博客 134

Android 面试题逐题简析:28 个专题,232 题

常见原因是未在 onMeasure 处理 AT_MOST 下的期望尺寸,沿用了默认测量而占满可用区域,或未考虑内容、padding 和最小尺寸。应计算 desiredWidth/Height,再通过 resolveSizeAndState 等与父约束合并。wrap_content 是测量输入,框架不会自动知道自定义内容想要多大。

一个踩这七色彩虹的路人甲 151
上一篇: 【转】android 开源引擎
下一篇: Android菜鸟日记 21音效- SoundPool
iPoolo
博客等级 码龄17年 2粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值