Android-----ListView

一个不可忽视的控件,几乎和互联网和用户有关的,都会涉及到ListView,今天介绍一个高效的ListView写法,并介绍ListViewAdapter五步法

在Activity中,ListView的写法前篇一律
第一步:加载数据
List<String> data = new ArrayList<String>();
for(int i=0;i<=30;i++){
    data.add("aaa"+i);
}
第二步:加载ListView
ListView  listview = (ListView)this.findViewById(R.id.listView1);
第三步:加载Adapter
ListViewAdapter listViewAdapter = new ListViewAdapter(this,data);
listView.setAdapter(listViewAdapter);

完事

重头戏,ListViewAdapter的写法
第四步:ViewHolder
       //利用泛型加载控件public static <T extends View>T get(View view,int id){
            SparseArray<View> viewHolder = (SparseArray<View>)view.getTag();
            
            if (viewHolder == null) {
                viewHolder = new SparseArray<View>();
                view.setTag(viewHolder);
            }
            
            View childView = viewHolder.get(id);
            
            if (childView == null) {
                childView = view.findViewById(id);
                viewHolder.put(id, childView);
            }
            
            return (T)childView;
        }
第五步:getView
       //判断是否新建视图对象
        if(convertView == null){
            convertView = LayoutInflater.from(this.context).inflate(R.layout.list_item, null);
            Log.e("Adapter", "新建行号:"+String.valueOf(position));
        }
        //加载控件
        TextView textView = ViewHolder.get(convertView,R.id.editText1);
        //操作控件
        textView.setText(data.get(position));
        //返回视图
        return convertView;

本文中用了SparseArray来存储视图,SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的class,目的是提高效率

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。