Android---自定义Listview及其基本优化
来源:互联网 发布:软件项目解决方案 编辑:程序博客网 时间:2024/05/07 16:58
优化策略
-使用convertView 回收视图 减少内存消耗
-使用ViewHolder 内部类来缓存
直接上代码
MainActivty
public class MainActivity extends Activity { private List<String> content=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //设置数据 for(int i=0;i<20;i++) { content.add("我是第"+i+"个开关"); } ListView listView= (ListView) findViewById(R.id.listView); MyAdapter myAdapter=new MyAdapter(content,this); listView.setAdapter(myAdapter); }}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listView" /></RelativeLayout>
MyAdapter
public class MyAdapter extends BaseAdapter { private LayoutInflater inflater; private List<String> list; private class ViewHolder { TextView txt; } public MyAdapter (List list,Context context) { this.list=list; inflater=LayoutInflater.from(context); } @Override public int getCount() { return this.list.size(); } @Override public Object getItem(int position) { return this.list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView==null) { convertView=inflater.inflate(R.layout.listview_item,null);//通过inflater找到一个布局; viewHolder=new ViewHolder(); viewHolder.txt= (TextView) convertView.findViewById(R.id.textView); convertView.setTag(viewHolder);//将viewholder转换为object缓存起来 } else { viewHolder=(ViewHolder)convertView.getTag();//将缓存转换为viewholder拿出来 } viewHolder.txt.setText(list.get(position).toString());//设置数据 return convertView; }}
listview_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:text="New Text" android:layout_weight="5" android:id="@+id/textView" /> <Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:id="@+id/switch1" /></LinearLayout>
0 0
- Android---自定义Listview及其基本优化
- android listview优化及其解释
- ListView的基本使用及其优化
- Android之ListView优化基本
- Android中的ListView及其优化(待续)
- Android——ListView、Adapter及其优化
- Android自定义listview及其点击事件监听
- Android学习笔记:ListView优化基本方法
- Android学习笔记:ListView优化基本方法
- 0825Android基础ListView自定义Adapter优化
- Android 自定义ListView时的优化
- Android基本控件之ListView(二)<ListView优化>
- 【Android】以BaseAdapter做适配器的ListView及其性能优化
- [置顶]Android中Listview展示及其优化好处
- ListView的基本优化
- ListView的基本优化
- ListView自定义适配器 优化
- ListView的使用及其优化
- Android 3s动画渐变效果到登陆页面
- c++设计模式之策略模式
- 百度之星资格赛
- Ubuntu建立快捷方式(eclipse)
- Kaldi在Linux下的安装和编译
- Android---自定义Listview及其基本优化
- Python模块学习 ---- threading 多线程控制和处理
- 杭电ACM1398——Square Coins~~母函数
- Android知识要点整理(1)---- Android 2D动画
- hdu5254
- StringBuilder常用方法
- ITOO之精妙设计(二)——从设计到图形化的转化
- Ibatis+MySql实例
- SDWebImage的原理