ListView的归纳与总结
来源:互联网 发布:网络直播音效辅助工具 编辑:程序博客网 时间:2024/04/29 07:16
ListView,是每一个android程序员都应该和必须掌握的,也是使用频率最高的,不废话,直接正题...
常用adapter适配器:
1.ArrayAdapter(context,布局文件,控件ID,以维数组名) :只能实现内容单一的下滑显示
2.SimpleAdapter(context,集合,布局文件,String [ ] 建,int [ ] 控件id):显示的数据是多条键值对
例:List<Map<String,Object>>list=new HashMap<Map<String,Object>>();
d 创建每一个MAP对象,添加进list集合
map的键不会显示在屏幕上,值做选定数据用
3.BaseAdapter:使用频率最高的,直接添加类中的数据
回调: getCount()//设置总条目数据
getItem(int position)//返回条目对象
getItemId(int position)//返回条目对应ID
getView(int position,View converView,ViewGroup parent) //将条目转换成view对象,找条目对应的组件,设置每个条目数据
常用属性:
divider:在listView控件中添加分隔线,可以是图片或颜色线条dividerHeight:分割线高度
listSelector:点击单个item时的显示效果,图片或颜色
ListView代码中
Adapter.notify():刷新当前ListView的数据
遍历ListView
ListView.getChildCount():获得当前ListView的所有Item
View view=ListView.getChildAt(int):返回一个View类型的item
优化adapter:
据说,经测试,利用ViewHolder将有效提高50%以上的效率
public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; //判断是否是缓存 if (convertView == null) { holder = new ViewHolder(); convertView = View.inflate(context, R.layout.my_item, null); //将控件用holder的属性,利用convertView的tag存起来 holder.tv = (TextView) convertView.findViewById(R.id.item_tv); convertView.setTag(holder); } else { //通过tag找到缓存的控件 holder = (ViewHolder) convertView.getTag(); } //设置要显示内容 holder.tv.setText(data.get(position).getName()); return convertView; } //缓存类,存放控件属性,一般都用ViewHolder命名 class ViewHolder { TextView tv; }
监听
OnTouchListener:监听DOWN,MOVE,UP事件发生时的坐标
listview.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //触摸时 break; case MotionEvent.ACTION_MOVE: //移动时 break; case MotionEvent.ACTION_UP: //离开时 break; } return false; } });
OnScrollListener:在ListView滚动时,一直回调,三个参数精准的显示当前ListView状态
listview.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case NumberPicker.OnScrollListener.SCROLL_STATE_IDLE: //滑动停止时 break; case NumberPicker.OnScrollListener.SCROLL_STATE_FLING: //手指抛动时,ListView惯性滑动时 break; case NumberPicker.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: //正在滚动 break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //firstVisibleItem:当前能看见的第一个item的ID(从0开始) //visibleItemCount:当前能看见的item总数 //totalItemCount:整个ListView的item总数 //Toast.makeText(MainActivity.this,""+visibleItemCount,Toast.LENGTH_LONG).show(); Log.e("TAG",listview.getLastVisiblePosition()+"");//获取区域内最后一个item的id Log.e("TAG",listview.getFirstVisiblePosition()+"");//获取区域内第一个item的id } });
onItemClick:条目点击事件,需要注意的是,当item是自定义VIEW和item设置了onTochEvent时
有可能会导致listener无法被调用,解决办法:
1.对ListView的根控件设置android:descendantFocusability="blocksDescendants"
2.自定义监听
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this,""+data.get(position).getName(),Toast.LENGTH_LONG).show(); } });
0 0
- ListView的归纳与总结
- c++的总结归纳
- PyQt的QTableWidget的全面总结与归纳
- 数组与指针归纳总结
- 预测算法归纳与总结
- C++学习归纳与总结
- const与static归纳总结
- const与static归纳总结
- 正则表达式总结与归纳
- 前端面试总结与归纳
- 索引的种类与B*树索引 简单归纳总结
- java开发中所遇到的问题归纳与总结
- Adroid Intent Task的相关知识总结与归纳
- 对于IOS多线程问题的总结与归纳
- 概率论与数理统计的学习(归纳+总结)
- 针对简历做一些知识点的总结与归纳
- 自我对Map的使用方法总结与归纳!
- 关于学习过程中小知识点的总结与归纳
- C/C++中const的基本访问规则
- RFID破解三两事(原作者:YunFree)
- 程序后台Activity被回收后再次启动fragment失效问题
- android检测网络状态
- Oracle存储过程,函数,触发器
- ListView的归纳与总结
- 常用的自定义View例子三(MultiInterfaceView多界面处理)
- Oracle在触发器中自定义异常以及修改列的值
- 实现一个线程安全的内存池(使用线程私有数据机制TSD来实现)
- Oracle使用powerDesigner进行数据库设计
- 再见!我的2016上半年
- BZOJ 3036 绿豆蛙的归宿
- Handler从主线程向子线程发送消息
- C# 和 Java集合区别