您的位置:首页 > 移动开发 > Android开发

初学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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: