作者在 2015-07-07 08:28:15 发布以下内容
listview 特性:批量显示数据结构相同式者相近的数据。
以列表形式显示内容。 每行结构相似。
作用:批量展示信息。滑动显示。
listiview 组合控件;
普通控件:内容跟控件是在同一对象里面。
如:文本框等
组合控件:内容跟控件不在一个对象里面。
如:
listview的原理:
UI 内容:
listview控件: Adapter适配器:
框和行分隔 行布局和行内容
使用步骤:
1、在activity的布局文件里面。创建一个listview控件
注意:listview的高度要设置成match_pratent.
2、创建一个行布局文件
3、在activity里面找到这个listview控件对象。
4、初始化数据
为arraylist添加数据
5、设置适配器
listvie.setAdapter(适配器对象)
class MyAdapter extends BaseAdapter
{//设置行布局跟行内容
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//得到一个布局转换器
LayoutInflater inflater = getLayoutInflater();
//把布局文件转换成布局对象(每调用一次getview就创建一个新的对象)
RelativeLayout layout =
(RelativeLayout) inflater.inflate(R.layout.item_list, null);
//查找当前行的布局对象里面控件对象
TextView textView = (TextView) layout.findViewById(R.id.textView1);
//查找当前行对应的消息内容
String string = arrayList.get(position);
//把消息设置到当前行的textview上面
textView.setText(string);
Log.e("MyAdapter", "getView:" + layout + "--" + position);
//把设置完成的行布局对象显示出来
return layout;
}
//决定listview的行数
@Override
public int getCount() {
return arrayList.size();
}
}
//position : 行号,从零开始
//convertView保存完全消失的行布局对像 一般 在优化的时候会用到,
//ViewGroup parent 组 现在还不会用到,只有到切片的时候才会用到
listview的优化技巧:
1、复用行布局对象 convertview
if(convertView == null)
{
//得到一个布局转换器
LayoutInflater inflater = getLayoutInflater();
//把布局文件转换成布局对象(每调用一次getview就创建一个新的对象)
layout =
(RelativeLayout) inflater.inflate(R.layout.item_list, null);
}
else
{
layout = (RelativeLayout) convertView;
}
// 为listview注册上下文菜单
registerForContextMenu(listView);
// 设置listview的长按点击监听
listView.setOnItemLongClickListener(this);
//position : 行号,从零开始