初学android开发--day08
2016-04-20 18:53
330 查看
ListView的简单使用
xml中的常用属性:
divider 设置item间隙的颜色或者图片,必须要指定dividerHeight
dividerHeight 间隙之间的高度
静态设置ListView的显示内容
entries="@array/XXX"
动态设置显示内容,使用Adapter
ArrayAdapter adapter= new ArrayAdapter(上下文,Item布局文件的ID,数据源);
ListView.setAdapter(adapter);//让Adapter来显示ListView
ListView的事件监听
ListView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClicked(AdapterView,View ,position,long id){
String content = adapter.getItem(position);
ListView.getItemAtPosition(position)
}
});
ListView.setOnItemLongClickListener(new OnItemLongClickListener(){
public void OnItemLongClicked(参数跟单击一致){}
});
SimpleAdapter
第一个参数:上下文
第二个参数:数据源List<Map>
第三个参数:Item布局文件的ID
第四个参数:String数组,保存map中所需要显示到视图当中的key
第五个参数:int数组,保存item布局文件中用来显示数据的UI控件的ID
自定义BaseAdapter
getCount 返回ListView需要显示的条数
getItem 返回position位置对应的数据Item
getItemId 返回当前位置视图的id,默认为position
getView 返回每一个Item需要显示的视图
1、直接new View将Context上下文传递给View
2、使用LayoutInflater填充静态xml布局,生成View对象
(LayoutInflater)Context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
View view = inflater.inflate(R.layout.xxx,null);
ListView的优化:
1、ListView的高度需要指定为match_parent或者是具体值100dp
2、需要优化每次都调用LayoutInflater.inflate方法--复用convertView
3、需要优化每次都调用findViewById方法--使用ViewHolder做缓存
public View getView(int position,View convertView,ViewGroup parent){
ViewHolder holder=null;
if(convertView==null){
convertView=inflater.inflate(R.layout.xxx,null);
holder=new ViewHolder();
holder.text=convertView.findViewById(R.id.text);
holder.image=convertView.findViewById(R.id.iamge);
convertView.setTag(holder);
}
else{
holder=(ViewHolder)convertView.getTag();
}
holder.text.setText(XXX);
holder.image.setImageResource(R.drawable.xxx);
return convertView;
}
classViewHolder{
public TextView text;
public ImageView imageView;
}
xml中的常用属性:
divider 设置item间隙的颜色或者图片,必须要指定dividerHeight
dividerHeight 间隙之间的高度
静态设置ListView的显示内容
entries="@array/XXX"
动态设置显示内容,使用Adapter
ArrayAdapter adapter= new ArrayAdapter(上下文,Item布局文件的ID,数据源);
ListView.setAdapter(adapter);//让Adapter来显示ListView
ListView的事件监听
ListView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClicked(AdapterView,View ,position,long id){
String content = adapter.getItem(position);
ListView.getItemAtPosition(position)
}
});
ListView.setOnItemLongClickListener(new OnItemLongClickListener(){
public void OnItemLongClicked(参数跟单击一致){}
});
SimpleAdapter
第一个参数:上下文
第二个参数:数据源List<Map>
第三个参数:Item布局文件的ID
第四个参数:String数组,保存map中所需要显示到视图当中的key
第五个参数:int数组,保存item布局文件中用来显示数据的UI控件的ID
自定义BaseAdapter
getCount 返回ListView需要显示的条数
getItem 返回position位置对应的数据Item
getItemId 返回当前位置视图的id,默认为position
getView 返回每一个Item需要显示的视图
1、直接new View将Context上下文传递给View
2、使用LayoutInflater填充静态xml布局,生成View对象
(LayoutInflater)Context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
View view = inflater.inflate(R.layout.xxx,null);
ListView的优化:
1、ListView的高度需要指定为match_parent或者是具体值100dp
2、需要优化每次都调用LayoutInflater.inflate方法--复用convertView
3、需要优化每次都调用findViewById方法--使用ViewHolder做缓存
public View getView(int position,View convertView,ViewGroup parent){
ViewHolder holder=null;
if(convertView==null){
convertView=inflater.inflate(R.layout.xxx,null);
holder=new ViewHolder();
holder.text=convertView.findViewById(R.id.text);
holder.image=convertView.findViewById(R.id.iamge);
convertView.setTag(holder);
}
else{
holder=(ViewHolder)convertView.getTag();
}
holder.text.setText(XXX);
holder.image.setImageResource(R.drawable.xxx);
return convertView;
}
classViewHolder{
public TextView text;
public ImageView imageView;
}
相关文章推荐
- android源码环境下用mmm/mm编译模块,输出编译log到文件的方法
- android-Junit功能测试
- android学习之通过sqlite数据库实现记事本
- Android:自定义组合控件之动态删减编辑框
- android 判断控件是否在屏幕范围内 是否可见
- Android——NDK开发配置遇到的问题
- Android 6.0 悬浮窗默认关闭解决方案
- Android ListView 使用相关技巧
- Android实例-获取程序版本号(XE10+小米2)
- android 语言切换 横竖屏切换
- 为什么我们总是使用android:configChanges=“keyboardHidden|orientation”?
- Android保持屏幕常亮的三种方法
- android 百度地图定位开发2
- Android ScrollView的使用
- Android 内存分析(简)
- android-Junit单元测试
- Android Selector 与 Shape 基本用法
- Android引导页设计
- binbinyang---Android 常用控件
- Android WindowManager详解