直接使用ListView的基本步骤

获取数据
创建适配器
绑定适配器
需要实现重写的函数:
getCount() 获取数据长度
getItem (int position) 获取项资源
getItemId(int position) 返回解析数据项ID
getView () 把项资源解析成可见视图

直接使用ListView的源代码

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {private ListView mListView;//需要适配的数据private String[] names = {"京东商城", "QQ", "QQ斗地主", "新浪微博", "天猫","UC浏览器", "微信"};//图片集合private int[] icons = {R.drawable.jd, R.drawable.qq, R.drawable.dz,R.drawable.xl, R.drawable.tm, R.drawable.uc,R.drawable.wx};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化ListView控件mListView = (ListView) findViewById(R.id.lv);//创建一个Adapter的实例MyBaseAdapter mAdapter = new MyBaseAdapter();//设置AdaptermListView.setAdapter(mAdapter);}class MyBaseAdapter extends BaseAdapter {//得到item的总数@Overridepublic int getCount() {//返回ListView Item条目的总数return names.length;}//得到Item代表的对象@Overridepublic Object getItem(int position) {//返回ListView Item条目代表的对象return names[position];}//得到Item的id@Overridepublic long getItemId(int position) {//返回ListView Item的idreturn position;}//得到Item的View视图@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if (convertView == null) {convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.list_item,parent,false);holder = new ViewHolder();holder.mTextView = (TextView)convertView.findViewById(R.id. item_tv);holder.imageView=(ImageView) convertView.findViewById(R.id.item_image);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.mTextView.setText(names[position]);holder.imageView.setBackgroundResource(icons[position]);return convertView;}class ViewHolder {TextView mTextView;ImageView imageView;}}
}

自定义ListView步骤

父适配器:
继承自BaseAdapter

package com.example.androidapplicationmarket;import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;public abstract class DefaultAdapter<T> extends BaseAdapter {private String Info[]=null;Context context;public DefaultAdapter(String[] Info, Context context) {this.Info = Info;this.context = context;}public DefaultAdapter() {super();}@Overridepublic int getCount() {return Info.length;}@Overridepublic Object getItem(int position) {return Info[position];}@Overridepublic long getItemId(int position) {return position;}public abstract BaseHolder<T>getHolder();@Overridepublic View getView(int position, View convertView, ViewGroup parent) {BaseHolder<T>holder=null;if (convertView == null) {holder=getHolder();//holder.initView();convertView=holder.getView();}holder=(BaseHolder<T>)convertView.getTag();holder.initData(position);return convertView;}
}

自定义适配器:
为方便使用,隐藏四个需要重写的函数,只需继承父适配器

package com.example.androidapplicationmarket;import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;public class MyAdapter extends DefaultAdapter {public MyAdapter(String[] Info, Context context,String names[],int icons[]) {super(Info, context);this.names=names;this.icons=icons;}//需要适配的数据private String[] names ;//图片集合private int[] icons ;
//
//    public String[] getNames() {//       return names;
//   }
//
//   public void setNames(String[] names) {//        this.names = names;
//   }
//
//    public int[] getIcons() {//        return icons;
//   }
//
//    public void setIcons(int[] icons) {//        this.icons = icons;
//   }@Overridepublic BaseHolder getHolder() {return new MyHolder();}private class MyHolder extends BaseHolder{//绑定数据private TextView tv;private ImageView iv;@Overridepublic void initView() {view= View.inflate(context,R.layout.list_item,null);tv=(TextView)view.findViewById(R.id.item_tv);iv=(ImageView)view.findViewById(R.id.item_image);view.setTag(this);}@Overridepublic void initData(int position) {tv.setText(names[position]);iv.setBackgroundResource(icons[position]);}}
}
package com.example.androidapplicationmarket;import android.view.View;public abstract class BaseHolder<T> {protected View view=null;public BaseHolder(){initView();}public abstract void initView() ;public View getView() {return view;}public abstract void initData(int position) ;
}

绑定数据模板类(数据初始化)

package com.example.androidapplicationmarket;import android.view.View;public abstract class BaseHolder<T> {protected View view=null;public BaseHolder(){initView();}public abstract void initView() ;public View getView() {return view;}public abstract void initData(int position) ;
}

界面交互函数
使用自定义适配器

package com.example.androidapplicationmarket;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {private ListView mListView;//需要适配的数据private String[] names = {"京东商城", "QQ", "QQ斗地主", "新浪微博", "天猫","UC浏览器", "微信"};//图片集合private int[] icons = {R.drawable.jd, R.drawable.qq, R.drawable.dz,R.drawable.xl, R.drawable.tm, R.drawable.uc,R.drawable.wx};//MyAdapter myAdapter=new MyAdapter(names,icons);@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化ListView控件mListView = (ListView) findViewById(R.id.lv);//创建一个Adapter的实例MyAdapter myAdapter = new MyAdapter(names,this,names,icons);//设置AdaptermListView.setAdapter(myAdapter);}
}

运行结果

Android Studio ListView框架+优化安卓应用市场实例相关推荐

  1. ym——Android之ListView性能优化

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android之ListView性能优化 假设有看过我写过的15k面试题的朋友们一定知 ...

  2. Android Studio 快捷键大全,安卓内存监控悬浮

    | 打开类型层次结构 | Ctrl+H | Ctrl+H | | 打开方法层次结构 | Ctrl+Shift+H | Command+Shift+H | | 打开调用层次结构 | Ctrl+Alt+H ...

  3. Android Studio 笔记1.3 安卓应用目录结构

    这里写目录标题 一.学习目标 二.前言 三.笔记1.3概述 (一)安卓应用视图 1.Project视图 2.Package视图 3.Android视图 (二)安卓应用目录结构 1.项目清单目录 - m ...

  4. Android 使用Listview的优化

    Listview是Android中很重要的一个组件,在开发过程中使用到的Listview能站到30%,在新手开发过程中,往往会忽略对Listview的优化,在上一个项目的开发中,确实用到了很多List ...

  5. Android中ListView的优化

    ListView的优化方案有很多,主要是以下几点         1.  重用了convertView,减少了内存消耗.通过判断convertView是否为null,是的话就需要产生一个ViewHol ...

  6. Android Studio ListView+SimpleAdapter使用之仿酷狗界面

    写博客的目的在于分享,更是为了积累项目经验.博客亦是一本武功秘籍,回头哪个招式忘了怎么耍,也好对照参考.这篇文章是对ListView,SimpleAdapter以及ListView监听事件的使用详解, ...

  7. Android Studio ListView数据适配器实现通讯录设计(头像加名称)

    需求:设计一个通讯录列表(六组数据),以显示头像和名称. 1.自定义布局,用于显示listview的列表单项 2.自定义BaseAdapter 3.绑定数据适配器 结果:如图 一.UI布局设计 A: ...

  8. android studio创建第一个安卓程序加载html5页面(一)

    前言 软件版本:android studio v1.0正式版,由于v0.x以来软件变化一直比较大,很多问题搜索的解决方案也都是v0.x版本时代的,故首先声明一下版本. 动机:由于工作中需要对移动端软件 ...

  9. Android中ListView数据处理优化

    来自:OPEN经验库 原帖:http://www.open-open.com/lib/view/open1330132229874.html Android 应用开发中,采用ListView组件来展示 ...

最新文章

  1. Android 源码编译相关
  2. python这个软件学会能做什么工作-不要再复制粘贴了 !学会Python,分分钟搞定一整天的工作...
  3. 北海市卫生学校计算机教室,北海卫校2021年招生简章_北海市卫生学校
  4. 树莓派4B安装系统及基础配置
  5. 优化传输文件的性能- -零拷贝
  6. oracle对象权限 函数,oracle的系统和对象权限
  7. VS2010主题设置及插件推荐
  8. SpringMVC解决静态资源不能访问
  9. Angular4.x 安装|创建项目|目录结构|创建组件
  10. CCF201412-2 Z字形扫描(模拟)
  11. 中文编程汉语编程开发的大型管理软件案例
  12. JMeter入门合集
  13. win10进不去计算机配置,Win10电脑系统设置打不开的解决方法
  14. 【JAVA】数据结构——二叉树的学习
  15. Java——Json语法介绍与使用(详细介绍)
  16. VMware无法启动虚拟机的解决办法
  17. C语言的三种参数传递方式
  18. 算法导论 3.2-1 关于单调递增函数的证明
  19. Luogu P2245 星际导航
  20. 谷歌浏览器Chrome 7.1-7.3版本,设置默认启动flash的方法

热门文章

  1. unity 层次包围盒 AABB树
  2. JS(受人以鱼 不如受人以渔)第十七课
  3. 【目标检测】研究生第一次组会汇报PPT(初稿)(专业术语讲解+论文分析)(100页)(下篇)
  4. mysql having and or_MySQL HAVING子句
  5. 如何快速找到多个基因的结构域和保守位点(conserved domain)
  6. 在 Oracle sql developer导入样例表数据上 运行脚本
  7. Google为知识图添加健康知识,搜索结果将直接回答健康相关问题
  8. windows使用scoop安装gcc报404错误的解决方法
  9. Python NumPy ufunc 双曲函数(sinh、cosh、arctanh)
  10. 港科百创 | 清影华康获新一轮战略投资,探索AI的C端落地