Android之个性化ListView实现

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Android中提供的ListView部件,用来在android手机中展现一个列表,这个列表的表现形式,完全由你选择的Adapter有关系,android框架中已有的adapter,形式都比较单调,能处理的数据都很一般。要想实现一个美观的列表,就得写自己的个性化adapter。 

具体过程分为这几步: 
第一步:定义自己的ListView类,继承android的ListView类。 
Java代码 
  1. public class CustomerizeListView extends ListView {  
  2.    //..  
  3. }  

第二步:在自定义ListView类中写一个自己的个性化Adapter类,因为和自己的ListView类相关,那就定义成内部类, 同时让它继承BaseAdapter类。例如在CustomerizeListView中添加一个CustomerizeListAdapter内部类,如下: 
Java代码 
  1. public class CustomerizeListView extends ListView {  
  2.    //..  
  3.    /** 
  4.     * Uses for setting data into CustomerizeListView. 
  5.     */  
  6.    protected class CustomerizeListAdapter extends BaseAdapter {  
  7.       //..  
  8.    }  
  9. }  

第三步:做一个自己个性化的layout,如下: 
Xml代码 
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:orientation="horizontal"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">  
  5.     <ImageView android:id="@+id/icon"  
  6.         android:layout_width="32dip"  
  7.         android:layout_height="32dip" />  
  8. </LinearLayout>  

第四步:在自定义ListView中追加自己需要的数据。例如,在CustomerizeListView中追加一个customerizeData属性,用来提供显示用的数据,如下: 
Java代码 
  1. protected Data customerizeData;  

第五步:复写BaseApter类中getView方法,在当中追加自己的个性化外观代码,如下: 
Java代码 
  1. public View getView(int position, View convertView, ViewGroup parent) {  
  2.     //..      
  3.     convertView = LayoutInflater.from(context).inflate(R.layout.list_item_icon, null);  
  4.     //Set data.  
  5. }  

第六步:在自己的ListView构造器中设置自己的个性化Adapter。例如在FilesListAdapter构造器中添加这样的代码,如下: 
Java代码 
  1. setAdapter(new CustomerizeListAdapter(context));  


    到目前为止,个性化ListView就基本上实现完毕!但这只是一个外观,不能响应用户的操作,我们可以通过添加OnItemClickListener来响应用户的操作,添加OnItemClickListener这一步可以拿到别的地方去做,但是我觉得最好是在自定义ListView里面就追加自己的OnItemClickListener,原因是往往用户点击item时,响应需要的数据都和ListView相关,拿到外面去做不方便,有时可能会破坏封装。例如我们就可以在CustomerizeListView构造器添加它本身的OnItemClickListener,如下: 
Java代码 
  1. setOnItemClickListener(new OnItemClickListener() {  
  2.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  3.                     long arg3) {  
  4.                 // Your processing procedure.  
  5.             }  
  6.         });  


下面是我自己开发的一个文件浏览夹浏览的例子。 
浏览文件: 
 

显示一个子文件: 
 

选择一个文件: 
 

注意:
 
      1.apk文件,运行1.6的模拟器上面; 
      2.源代码附上。 
  • fileExplorer_apk.zip (16.7 KB)
  • 描述: apk文件,运行在1.6的模拟器上
  • 下载次数: 82
  • fileExplorer_src.zip (43 KB)
  • 下载次数: 293
  • 查看图片附件

转载于:https://my.oschina.net/201003674/blog/288903

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试官 | Class.forName 和 ClassLoader 有什么区别?

作者 | 纪莫来源 | dwz.date/eUc在 Java 中 Class.forName() 和 ClassLoader 都可以对类进行加载。ClassLoader 就是遵循双亲委派模型最终调用启动类加载器的类加载器&#xff0c;实现的功能是“通过一个类的全限定名来获取描述此类的二进制字节流”&#xff0c;获取到二进制流…

微信公众号使用Chrome插件:Markdown Nice优化微信公众号排版教程

Markdown Nice 是一个为了解决微信公众号排版而生的 Markdown 编辑器&#xff0c;当前有在线编辑器和 Chrome 插件 2 种产品形态。 下面介绍Chrome 插件&#xff1a;Markdown Nice 一、下载和安装Markdown Nice 1.从 墨滴 网站下载mdnice谷歌浏览器插件&#xff0c;如下图&a…

面试官 | 如何优雅的设计Java 异常?

作者 | lrwinx来源 | lrwinx.github.io异常处理是程序开发中必不可少操作之一&#xff0c;但如何正确优雅的对异常进行处理确是一门学问。异常的类别正如我们所知道的&#xff0c;java中的异常的超类是java.lang.Throwable(后文省略为Throwable),它有两个比较重要的子类,java.l…

3.Python Django之GET请求和POST请求及响应处理

一、请求中的方法 方法描述GET请求指定的页面信息&#xff0c;并返回实体主体。HEAD类似于GET请求&#xff0c;只不过返回的响应中没有具体的内容&#xff0c;用于获取报头。POST向指定资源提交数据进行处理请求&#xff08;例如&#xff1a;提交表单或者上传文件&#xff09;…

面试官 | Java中的注解是如何工作的?

自Java5.0版本引入注解之后&#xff0c;它就成为了Java平台中非常重要的一部分。开发过程中&#xff0c;我们也时常在应用代码中会看到诸如Override&#xff0c;Deprecated这样的注解。这篇文章中&#xff0c;我将向大家讲述到底什么是注解&#xff1f;为什么要引入注解&#x…

优秀的代码原来是这样分层的

作者 | 咖啡拿铁来源 | t.cn/RdrmI7i1、背景说起应用分层&#xff0c;大部分人都会认为这个不是很简单嘛 就controller&#xff0c;service, mapper三层。看起来简单&#xff0c;很多人其实并没有把他们职责划分开&#xff0c;在很多代码中,controller做的逻辑比service还多,se…

面试官 | 什么是 Lambda?该如何使用?

作者 | Mingqi来源 | zhihu.com/question/20125256/answer/3241213081.什么是Lambda?我们知道&#xff0c;对于一个Java变量&#xff0c;我们可以赋给其一个“值”。如果你想把“一块代码”赋给一个Java变量&#xff0c;应该怎么做呢&#xff1f;比如&#xff0c;我想把右边那…

面试官 | 线程间是如何通信的?

作者 | wingjay来源 | wingjay.com正常情况下&#xff0c;每个线程独立完成自己的任务就结束了&#xff0c;但某些特殊情况下&#xff0c;我们需要多个线程来共同完成某项任务&#xff0c;这时就涉及到了线程间通信了。本文涉及到的知识点&#xff1a;thread.join()object.wait…

Linux debian解压和压缩.rar文件教程

一、简介 我们上传到Linux服务器上的文件日常是.zip或.tat.gz的文件&#xff0c;我们可以用相应的命令对文件进行解压。有时会遇到.rar文件。本次使用rar软件版本是5.6.0。官方网站为http://www.rarlab.com/ 二、下载和安装rar文件 1.创建文件夹 [rootdoudou ~]# mkdir /us…

windos手工扩展分区

为什么80%的码农都做不了架构师&#xff1f;>>> windows 2003系统下手工扩展分区&#xff08;2008系统直接在磁盘管理里扩展卷即可&#xff09; 1、虚拟机关机&#xff0c;将目标磁盘扩展到所需大小 2、开机&#xff0c;进入命令行模式 3、diskpart 进入diskpart工…

面试突击 | 彻底搞定 JVM 这几道高频面试题

前言 Java 相比 C/C 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收)&#xff0c;它解决了 C/C 最令人头疼的内存管理问题&#xff0c;让程序员专注于程序本身&#xff0c;不用关心内存回收这些恼人的问题&#xff0c;这也是 Java 能大行其道的重要原因之…

阿里面试官给你的一些忠告,这样做肯定错不了!附视频

作者 | 梦游的龙猫来源 | http://dwz.win/2pU近期面试了许多&#xff0c;真的是许多同学&#xff0c;讲道理其实我是比较有耐心的面试官&#xff0c;但是还是忍不住想要吐槽&#xff0c;因此写下这篇文章&#xff0c;一方面希望可以帮助到正在面试&#xff0c;或者在来面试路上…

Java面试详解(2020版):500+ 面试题和核心知识点详解

与其在网上拼命的找面试题&#xff0c;不如加入我们畅快的阅读。为了写好这些面试题&#xff0c;我先后拜访了一二十家互联网公司&#xff0c;与不同的面试官和面试者进行面对面探讨&#xff0c;深入了解了企业对于面试者的要求和常见的 Java 面试题型。之后我花了大半年的时间…

Linux debian安装Vim和Vim使用教程

Vim 是一个开源免费工具&#xff0c;具有命令行界面和图形用户界面。它对于编辑用 shell、python、Perl、c/c 等编写的配置文件和程序特别有用。最新版本的 Vim 包括一些新功能、错误修复和文档更新。 Vim安装步骤 步骤一、首先使用下面命令更新一下系统&#xff0c;确保您的…

给所有开发人员的 11 条忠告(第 4 条亮了)

1、初学者尽量去有成熟技术团队的公司 其实很多小型的互联网创业公司只有一两个人技术人员&#xff0c;如果里面有大牛能带你成长还好&#xff0c;但大部分估计都是要你自己去摸索学习来解决公司的问题&#xff0c;对个人成长其实是很慢长对过程&#xff0c;相反如果你去大厂&a…

Linux debian安装Notepadqq,Linux系统下的Notepad++编辑器

Notepad是Windows系统常用的文本编辑器&#xff0c;而Notepadqq是Linux系统下Notepad的免费开源替代品。 在Debian系统中安装Notepadqq的方法 Debian也可以像Ubuntu系统一样使用PPA来安装Notepadqq&#xff0c;但我们需要手动添加PPA。 1.打开终端&#xff0c;使用以下命令&…

Codeforces Round #FF

A.DZY Loves Hash hash函数 h(x) x % p  输出第一次冲突的位置 #include<iostream> #include<cstdio> #include<cstdlib>using namespace std;const int maxn 4000;int p, n; bool inhash[maxn];int main() {freopen("447A.in", "r"…

面试突击 | Redis 如何从海量数据中查询出某一个 Key?视频版

作者 | 王磊面试突击 | 第 001 期1 考察知识点本题考察的知识点有以下几个&#xff1a;Keys 和 Scan 的区别Keys 查询的缺点Scan 如何使用&#xff1f;Scan 查询的特点2 解答思路 Keys 查询存在的问题Scan 的使用Scan 的特点3 Keys 使用相关 1&#xff09;Keys 用法如下2&#…

面经 | 我是如何拿到阿里offer的?附面试题+视频

作者 | rhwayfunn来源 | http://dwz.win/2JK本文来自 rhwayfunn 本人自述&#xff1a;拿到阿里实习offer&#xff0c;经历了5次面试&#xff0c;其中4轮技术面&#xff0c;1轮HR面试。在这里分享一下自己的面试经验和学习总结。希望能够帮助更多的小伙伴。我本科毕业于中南大学…

SCOM 2012知识分享-9:配置警报解决状态

适应平台&#xff1a;System Center 2012 RTM/SP1-------------------------------------------------------------------------------------------------------------设置警报的解决状态在操作控制台中&#xff0c;请单击监视。单击任何视图&#xff0c;将显示警告&#xff0c…