ListView的使用及优化
来源:互联网 发布:淘宝客api教程 编辑:程序博客网 时间:2024/06/05 12:05
什么是ListView?
我们来看几个效果图:
这两个都是使用ListView来实现的,ListView就是用来做这个的。
接下来,
用法:
需要:适配器(Adapter)
步骤:1.创建Adapter对象 MyAdapter adapter = new MyAdater(数据源);(具体实现之后再讲)
2.创建ListView对象 ListView lv = (ListView)this.findViewById();
3.设置数据源 lv.setAdapter(adapter);
所有的ListView的复杂功能实现都是靠自定义Adapter(适配器)来实现的,而不是ListView的本身。
一、基本ListView的使用
其实基本的ListView是指基本的Adapter,ListView的用法都一致。
1. 布局t01.XML(展示界面、主界面)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".T01" > <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="300dp" android:layout_alignParentLeft="true" android:layout_marginLeft="18dp" > </ListView></RelativeLayout>
2.标签文件 t01_item.XML (也就是组成的单元)
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#333" android:textColor="#fff" android:textSize="20sp" android:text="初始" /></LinearLayout>
3.自定义Adapter
class MyAdapter extends BaseAdapter implements OnTouchListener {public boolean delete( int index ){String emp = data.remove(index);this.notifyDataSetChanged();return emp != null;}private ArrayList<String> data = null;public MyAdapter(ArrayList<String> data) {this.data = data;}@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int position) {return data.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup vg) {ViewHolder holder = null;View view = null;TextView tv = null;view = View.inflate(T01.this, R.layout.t01_item, null);tv = (TextView) view.findViewById(R.id.tv);tv.setText(data.get(position));<span style="color:#990000;">/******/</span>return view;}}
如果要添加事件要在/******/的地方添加,也就是View返回之前
优化:
优化的步骤就是把弹出去的View重新利用,比如当界面下滑,上方的View被弹出去,这时下方可以利用上方弹出去的View。
不明白的同学要思考:View是所有控件或布局的父,这里实际是指子布局,也就是t01_item.XML
弹出去的View由系统提供。
重造后的getView函数
<span style="white-space:pre"></span>@Overridepublic View getView(int position, View convertView, ViewGroup vg) {<span style="white-space:pre"></span>ViewHolder holder = null;<span style="white-space:pre"></span>View view = null;<span style="white-space:pre"></span>TextView tv = null;<span style="white-space:pre"></span>view = View.inflate(T01.this, R.layout.t01_item, null);<span style="white-space:pre"></span><span style="white-space:pre"></span>if (null == convertView) {<span style="white-space:pre"></span>view = View.inflate(T01.this, R.layout.t01_item, null);<span style="white-space:pre"></span><span style="white-space:pre"></span>tv = (TextView) view.findViewById(R.id.tv);<span style="white-space:pre"></span>holder = new ViewHolder();<span style="white-space:pre"></span><span style="white-space:pre"></span>holder.tv = tv;<span style="white-space:pre"></span><span style="white-space:pre"></span>view.setTag(holder);<span style="white-space:pre"></span>} else {<span style="white-space:pre"></span>view = convertView;<span style="white-space:pre"></span>holder = (ViewHolder) view.getTag();<span style="white-space:pre"></span>tv = holder.tv;<span style="white-space:pre"></span>}<span style="white-space:pre"></span><span style="white-space:pre"></span>view.setOnTouchListener(this);<span style="white-space:pre"></span>tv.setText(data.get(position));<span style="white-space:pre"></span>return view;}ViewHolder类:
class ViewHolder {public TextView tv = null;}
就是修改t01_item.XML文件中的布局,例如增加ImageView、Button等等。
- ListView 的优化及使用
- ListView的使用及优化
- listview的优化及viewholder的使用
- Android 中 ListView的使用及优化
- Android中ListView的使用及优化
- listView使用及优化的浅显理解
- ListView使用及性能优化
- ListView 的优化使用
- ListView的优化及显示
- ListView的适配器及优化
- 适配器及ListView的优化
- listview的基本使用,listview的优化
- Android BaseAdapter使用及listview优化
- Android 使用Listview的优化
- ListView的使用及其优化
- ListView优化--ViewHolder的使用
- ListView的使用(未优化)
- Android ListView 的优化使用
- MySQL登录出现 ERROR 1045 (28000): Access denied for user 'root'@'localhost'
- iOS 个别问题
- 360的笔试题
- play框架2.5.6教程——使用play控制台
- 【bzoj 1492】【codevs 1797】 [NOI2007]货币兑换Cash (dp+cdq分治)
- ListView的使用及优化
- LeetCode学习篇二——分治法
- KVO 和 NSNotification
- ubuntu 安装QT
- poj2762 Going from u to v or from v to u?--trajan算法 & 强连通分量 & 缩点 & 拓扑排序
- ListView和ExpandableListView的侧滑删除操作
- (4.1.42)Android之Filter过滤数据
- pygame 的使用(1)
- TextView显示丰富多彩的文字(三)——自定义CharacterStyle和ParagraphStyle显示效果