ListView--------------自定义适配器

ListView自定义适配器Adapter的实现与优化 ListView是Android平台上最常用的列表组件之一,主要用于展示滚动列表信息。开发者可以通过它来快速创建滚动型列表界面。然而,为了将数据有效地展示在ListView中,就需要适配器(Adapter)的参与,因为适配器负责将数据模型映射到ListView的每一行视图。数据模型(Model)是MVVM(Model-View-ViewModel)架构中的核心组件之一,它代表了应用程序中的业务逻辑和数据结构。 阅读详情

接上一篇ListView常用适配器,现在针对一些要求较高的ListView实现效果来时,自定义适配器,可以达到我们想要的结果。此次,我们自己重新书写Adapter,

来让我们的程序更加美观和实用性更强。

适配器如下:



import java.util.HashMap;
import java.util.List;


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


public class ListAdapter extends BaseAdapter
{


private Context context ;
private LayoutInflater layoutInflater = null;
private List<HashMap<String, String>>data;

public ListAdapter(Context context,List<HashMap<String, String>>data){
this.context = context;
this.data = data;
layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}
@Override
public int getCount()
{

return data.size();
}


@Override
public Object getItem(int arg0)
{

return data.get(arg0);
}


@Override
public long getItemId(int position)
{

return position;
}


@Override
public View getView(int position, View convertView, ViewGroup parent)
{
HolderView holderView = null;

 if (convertView == null)//我们再次是为了如果convertView实例化了,不用再实例化,可以节省内存
{
 holderView= new HolderView();
 convertView = layoutInflater.inflate(R.layout.item, null);
 holderView.numView = (TextView)convertView.findViewById(R.id.bianhao);
 holderView.nameView = (TextView)convertView.findViewById(R.id.name);
 holderView.ageView = (TextView)convertView.findViewById(R.id.age);
 
 convertView.setTag(holderView);
}else {
holderView = (HolderView)convertView.getTag();
}
 holderView.numView.setText(data.get(position).get("bianhao"));
 holderView.numView.setText(data.get(position).get("name"));
 holderView.numView.setText(data.get(position).get("age"));
return convertView;
}


private class HolderView{
TextView numView;
TextView nameView;
TextView ageView;
}
}

代码如下:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;


public class ListViewDemoActivity extends Activity
{
/** Called when the activity is first created. */

private ListView listView ;
private ListAdapter  adapter;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

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

adapter = new  ListAdapter (ListViewDemoActivity.this,getData() );
listView.setAdapter(adapter);

listView.setOnItemClickListener(new OnItemClickListener()
{

/*
* parant 表示的是哪一行listView
* view 是你的子布局 RelativeLayout
* position和id是相等的
*/

public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{

ListView lsListView = (ListView)parent;
HashMap<String, String> hashMap = (HashMap<String, String>) parent.getItemAtPosition(position);

Toast.makeText(ListViewDemoActivity.this, hashMap.get("bianhao")+ hashMap.get("name"), Toast.LENGTH_SHORT).show();

}
});
}


private List<HashMap<String, String>> getData()
{


List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();
map.put("bianhao", "编号");
map.put("name", "姓名");
map.put("age", "年龄");
data.add(map);
map = new HashMap<String, String>();
map.put("bianhao", "123");
map.put("name", "小张");
map.put("age", "123");
data.add(map);
map = new HashMap<String, String>();
map.put("bianhao", "123");
map.put("name", "小张");
map.put("age", "123");
data.add(map);
map = new HashMap<String, String>();
map.put("bianhao", "123");
map.put("name", "小张");
map.put("age", "123");
data.add(map);

return data;
}
}

//main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ListView android:id="@+id/listView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:cacheColorHint="#000000"></ListView>

</LinearLayout>


//item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >


<TextView
android:id="@+id/bianhao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:padding="15dip"
android:text="@string/hello" />


<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/age"
android:layout_centerInParent="true"
android:layout_toRightOf="@+id/bianhao"
android:padding="15dip"
android:text="@string/hello" />






<TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dip"
android:layout_alignParentRight="true"
android:text="@string/hello" />


</RelativeLayout>


从0开始学GEE python——Google Earth Engine (GEE) 和 geemap 库来获取 Sentinel-2 卫星影像,并将其可视化 这段代码的目的是从 Sentinel-2 卫星影像中获取特定地点的影像,并将其可视化在地图上。通过设置合适的波段和可视化参数,用户可以清晰地查看该地区的卫星影像。 阅读详情

相关推荐

手把手教你用Trae配置Python开发环境(含Claude 3.5代码生成实战)

本文详细介绍了如何使用字节跳动推出的Trae智能开发环境配置Python开发环境,并实战演示了Claude 3.5代码生成功能。从环境准备到项目初始化,再到AI辅助编码和调试优化,全面展示了Trae在提升开发效率方面的强大能力,特别适合Python开发者快速搭建项目和解决复杂问题。

weixin_28309571的博客 976

Android的自定义ListView适配器

ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果。 正文 示例:实现图片文字混合列表 代码 代码如下(示例): 1 package com.example.work; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 7 8 import

每天不是在写bug就是在写bug的路上 802

FDTD超表面仿真详细教程,几何相位,共振相位,传播相位

FDTD的超表面主要几何相位型(PB型)和共振型两种类型,其中PB型每个cell中的纳米棒的长宽相同,旋转角度不同,共振型长宽不同,旋转角度相同。本博文中以最常见的长方形纳米棒为例,用FDTD演示两种超表面实现的聚焦透镜的功能,包含详细步骤,其他形状,材料的超表面可自行尝试。

wuyuerhhg的博客 3万+

关于listview的自定义适配器

listview是什么? listview是展示列表的view listview的作用? 展示列表 适配器的作用是什么? 适配器是将数据显示在listview上的中介 数据是什么? 具体的将被映射的字符串,图片,或者基本组件。 listview自定义适配器的步骤? 第一步:创建listview xml文件 并找到id; 第二步:创建一个装数据的容器 此处我用的是arr...

206

如何实现chrome谷歌浏览器多开(独立环境 独立cookie)

由于各种各样的原因,你可能需要在一个电脑登录某个平台,比如一个电脑登录3个公众号,或者3个知乎等等。最简单的方案是,直接安装3个不同的浏览器,比如一个谷歌浏览器,一个火狐浏览器,一个 Edge 浏览器。这个方案也能解决,但如果想多开10个呢?安装10个不同的浏览器也能解决,但感觉这样比较复杂,另外一方面安装太多的应用,会导致电脑卡顿。这里给大家介绍,我在 Win 和 Mac 系统下的躲开解决方案。Win 系统下的解决方案最为简单,原理就是给不同的谷歌浏览器,指向不同的用户存储路径即可。

lzqial1987的专栏 1万+

自动驾驶——最优控制算法(LQR)工程化总结

到近段时间,真正在我们的控制器上运行最优控制算法(LQR),一步一个脚印,从开始只是知道其“控制理论”的阶段、再到对着一堆网上的资料和公式一筹莫展不知何着手、再到初步实现了LQR算法的开发(但是使用的扭矩环控制,控制的不好,而且由于各种原因被delay,迟迟无法落地),直到大上个星期,泊车平台有此LQR开发需求,又重新了开始了算法的研发,用时一个周时间完成了算法开发,然后再用一个周时间进行实车最优控制算法验证与调试,取得了很大的进展,由于执行器是转角控制的,这无疑少了很多的工作量。

qq_40464599的博客 2787

ListView的几种适配器及自定义适配器

ListView是我们在Android应用开发中常用的组件,它通过列表的形式展示数据,具有很强的可扩展性,通常使用还会给每一项绑定一个点击时间,用于处理相应的请求,ListView在电商的商品列表中是必不可少的,下面我们介绍几种常用的使用方法。  列表的显示需要三个元素:           1.ListVeiw   用来展示列表的View。           2.适配器   

zengguangchun的博客 1万+

南京邮电大学电工电子实验(二)复习一

本文给电工电子实验(二)的复习进行一些知识点的提醒

YOUXISUN的博客 2958

ListView之自定义适配器的使用

1通过.实例来描述:  二..实现此功能有以下步骤: 1.ListView及ListView_Item 2.实体类的编写 3.自定义适配器的书写 4.ListView的绑定数据源与控件 自定义适配器MyAdapter package cn.edu.bzu.list_view1; import java.util.List; import

wangjiani112的博客 639

药物对接仿真软件:HADDOCK_(5).HADDOCK中蛋白质-配体对接流程

半柔性能量最小化阶段是在刚体能量最小化的基础上,允许配体的部分柔性,通过优化配体的构象来进一步提高对接的准确性。半柔性能量最小化阶段是在刚体能量最小化的基础上,允许配体的部分柔性,通过优化配体的构象来进一步提高对接的准确性。如果是PDB格式,确保文件包含所有必要的原子信息。对接完成后,HADDOCK会生成一系列的输出文件,包括对接后的蛋白质-配体复合物结构文件、能量评分文件和统计分析文件。对接完成后,HADDOCK会生成一系列的输出文件,包括对接后的蛋白质-配体复合物结构文件、能量评分文件和统计分析文件。

kkchenjj的博客 1081

浅谈innovus Update io latency相关作用

同样我们使用update io latency,工具取launch clock latency负值反标到clock端口上,同时认为capture clock latency与launch clock latency相等,这样可以相互抵消,这样setup time slack = T – Tsetup -Tcomb – Toutput_delay,因此采用update io latency后,reg2out timing path的setup check变得真实些。图3 in2reg示意图。

芯冰乐 474

Android学习笔记--ListView、自定义适配器、模糊查找

安卓学习笔记--ListView、自定义适配器、模糊查找、RecyclerViewListView的基本使用最简单的ListView为ListView设置点击事件自定义适配器如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 ListView的基本使用 最简单的ListVie

qq_44248026的博客 2868

[SVA]SystemVerilog Assertion Property开发技巧总结

SystemVerilog Assertion开发技巧总结 一、在property中可以使用if-else条件语句 如下面的例子,根据misc_phy_12g_rx的取值,选择不同的判断语句 property ck1_en_rose_chk(); @(posedge clk) disable iff(~rst_n) ad_pn_ck1en & (current_state !== ST_IDLE) |->...

元直的博客 5924

自定义ListView适配器继承BaseAdapter

在开发中,我们经常使用到ListView这个控件。Android的API也提供了许多创建ListView适配器的快捷方式。例如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter等。但你是否发现,如果采用这些系统自带的适配器,对于事件的响应只能局限在一个行单位。假设一行里面有一个按钮和一个图片控件,它们之间的响应操作是不一样的。若采用系统自带的适配器,就不能

LovelyCoder 1226

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

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

自定义ListView适配器

public class MylistAdapter extends BaseAdapter{ public List> list;     //数据 public Context context;   public int width; public MylistAdapter(Context context,List> list,int width) { this.widt

sxw520xxx的博客 232

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android ListView:具有ImageView的自定义适配器

在上一篇文章中,我们讨论了自定义适配器。 我们只使用了一个非常简单的适配器和一个TextView 。 我们想扩展前面描述的想法,并为每个行星介绍一个图像。 为此,我们必须修改布局和其他代码部分以处理用户单击每个项目的情况。 我们希望ListView中的每一行看起来像: 我们要做的第一件事是修改布局并使用RelativeLayout而不是简单的LinearLayout。 我们的布局如...

530

NTscan扫描工具

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

Android ListView控件的使用(自定义适配器 + ListView + 解决OOM )

项目中遇到的问题,上网查阅以及自己思考解决了ListView控件的使用问题,废话不多说,程序运行图如下所示:                                                                            常规的方法我们通常采用的是ListView + SimpleAdapter来实现上述的界面,代码很简单,逻辑很清楚。但是如果我想要点击比

Danielntz的博客 934

ListView自定义适配器 优化

今天学习了list的自定义适配器,本以为能够把view以及对应的数据全都存放在listview就万事大吉了,但是没考虑到一点,那就是内存的使用问题,当我们使用getview不停得加载listview中数据时,有一段代码是不断重复执行的,那就是我们对应的搜索空间的代码 public View getView(int position, View convertView, ViewGroup p

qq_29225597的博客 297

ListView(下)自定义适配器

(一) 1.效果图 2.activity_main.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="...

151

ListView自定义适配器+解决Scroll与listview滑动冲突

listview自定义适配器以及解决滑动冲突 生成一个类继承BaseAdpter继承方法 package adpter; import android.content.Context; import android.media.Image; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import an

u014627911的博客 264

自定义适配器android,Android的listview使用之2,自定义适配器

前面我们已经了解到了Listview的最基本用法,是不是觉得只是展示单纯的文字信息比较单调,那我们现在就马上来看listview使用之,自定义适配器,使用这个以后,就可以展示各种各样的数据啦。先看效果第一步 新建一个类 继承BaseAdapter 可以看到必须实现四个方法 下面来一一解释第一个getCount方法 返回整个list里面数据的个数第二个getItem方法 返回没一个Ite...

weixin_28687251的博客 334

ListView自定义适配器

网上关于这方面的好的文章: http://yilee.info/android-diy-listview.html http://blog.youkuaiyun.com/xiaominghimi/article/details/6314704 http://blog.youkuaiyun.com/chenzheng_java/article/details/6202586# 主布局文件:

心有猛虎,细嗅蔷薇 1万+

自定义ListView和适配器

布局文件 (activity_main.xml)添加ListView &lt;ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent"&gt;&lt;/ListView&gt;   单条样式 ...

hsu_cy的博客 299

ListView 之 自定义适配器

在开发中,我们经常使用到ListView这个控件。Android的API也提供了许多创建ListView适配器的快捷方式。例如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter等。但你是否发现,如果采用这些系统自带的适配器,对于事件的响应只能局限在一个行单位。假设一行里面有一个按钮和一个图片控件,它们之间的响应操作是不一样的。若采用系统自带的适配器,就不能

Do 734

ListView应用Demo使用自定义的适配器继承BaseAdapter

使用ListView大部分都会使用自定义的适配器来达到显示更多种多样的内容,所以下面的例子就简单的使用了自定义的适配器。 1.XML文件代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

銀河遊民空間 736

ListView的自定义适配器Adapter

先吹个牛在我刚入Android的时候,真心觉得ListView的自定义适配器好难啊,不过后来写的多了,渐渐发现它的使用方式也就那点套路,初期自学的话上手不易,但是真的上手了就会很简单了,当然了,listview的运用扩展性特别强,所以后期还得靠自己的悟性,废话不多说,最初级的教程奉上,(大神勿喷,本人菜鸟,不当之处多多包涵)准备工作主窗体至少得有一个listview控件吧,既然是自定义适配器,还少不

Newbieforme的博客 591
上一篇: TextView的一些高级显示
下一篇: android 工程常见问题解决
onlywaitforyou
博客等级 码龄15年 6粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值