listView基本实现-创新互联

1.getView()界面每显示一行都会调用getview()方法

创新互联企业建站,10多年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于成都网站设计、成都网站制作中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。

listView基本实现

2.初始化数据

listView基本实现

在getview()

listView基本实现

listView基本实现

lsitveiw复杂行布局的实现

1.创建行布局文件  Ctrl+N

listView基本实现

2.getview()设置行布局文件

//1.获得布局转换器

 LayoutInflater inflater = getLayoutInflater();

//2.将行布局文件转换为View对象

View layout = inflater.inflate(R.layout.list_item, null);

//3.查找行布局中的控件

TextView tvTitle = (TextView) layout.findViewById(R.id.tv_title);

TextView tvSubTitle = (TextView) layout.findViewById(R.id.tv_subtitle);

return layout;

使用自己创建的适配器对象

1.创建一个类继承BaseAdapter{重写四个方法}

2.使用

listView基本实现

数据封装

1.创建一个类保存每一行的数据

成员变量类型  个数  取决于  行的控件所要保存的数据

创建带参的构造方法  get()  set()

listView基本实现

2.创建容器保存Data数据

  ArrayList list=new ArrayList();

3.初始化数据

listView基本实现

4.getview()获得每一行的数据  Data

listView基本实现

空指针

错误:

(TextView) findViewById(R.id.tv_subtitle);

正确:

(TextView) layout.findViewById(R.id.tv_title);

listView基本实现

优化

1.复用行布局

只需要创建界面可见最多行的布局对象,其他界面不可见的行,复用界面消失的行布局

listView基本实现

convertView:保存即将消失的行布局对象索引

注意:getview()中的变量不要声明为成员变量

1.//判断convertView是否为空

View layout =null;

if (convertView==null) {//convertView为空就创建界面可见最多行的布局对象

 //获得布局转换器

LayoutInflater inflater = getLayoutInflater();

//将行布局文件转换为View对象

layout = inflater.inflate(R.layout.list_item, null);

}else {//convertView不为空,说明convertView保存了消失的行布局对象索引

   就复用消失的行布局对象

    layout=convertView;

   }

优化二:减少控件查找次数

实现步骤:

1.创建ViewHolder类:保存查找到的控件的索引   (笔记)

listView基本实现

2.保存查找到的控件索引 并且  为布局设置标签(保存viewHolder索引)

listView基本实现

3.复用的行  只需要从标签里拿到控件的索引  不需要再次findviewbyid()

查找控件

listView基本实现

ListView 数据更新

1.对容器进行操作

2.适配器通知ListView更新界面 通过调用mAdapter.notifyDataSetChanged();

listView基本实现

listView基本实现

Listveiw行点击事件

1.普通点击事件

listView基本实现

2.长按点击事件

listView基本实现

行点击事件失效

1.行布局中放入Button   控件抢占焦点

在抢占焦点的控件中设置: android:focusable="false"

在最外层布局设置:

android:descendantFocusability="blocksDescendants" >

1. 为Listview注册上下文菜单

 registerForContextMenu(mListView);

2.设置长按点击事件  保存长按行的行号

listView基本实现

3.重写onCreateContextMenu();

4.重写onContextItemSelected();菜单点击事件

listView基本实现

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:listView基本实现-创新互联
链接URL:http://ybzwz.com/article/igjsj.html