Android高级控件之ListView的优化以及下拉刷新页面
来源:互联网 发布:软件使用说明怎么写 编辑:程序博客网 时间:2024/06/14 04:30
1.ListView的优化
在优化之前我们先来说说配置器的自定义,为什么需要自定义配置器呢,因为系统自带的配置器不能满足我们的需求,所以就需要我们自己写配置器来实现功能,
但是在创建ListView时我们需要先得到两大元素:
1)数据集,即要映射的字符串、图片信息之类。
2)适配器,实现把要映射的字符串、图片信息映射成视图(如Textview、Image等组件),再添加到ListView中。
实现细节:1.得到控件(通过控件id得到)
2.得到数据源
3.创建适配器
public class ListViewAdapter(自己定义名字) extends BaseAdapter{........} //自定义的适配器一般继承BaseAdapter类
4.通过控件设置适配器
自定义适配器后直接在设置适配器中调用就可以了
2.优化ListView
我们为什么要优化ListView,因为不优化的话,数据过多会引起数据溢出而报错,如果我们优化了的话就会减少内存的消耗,同事加快item的加载速度,
1):
重用了convertView,很大程度上的减少了内存的消耗。通过判断convertView是否为null,是的话就需要产生一个视图出来,然后给这个视图数据,最后将这个视图返回给底层。
特点:如果当前的convertView为null,则通过LayoutInflat产生一个view。
ViewCode
publicViewgetView(intposition,ViewconvertView,ViewGroupparent)
{
if(convertView==null)
{
convertView=LayoutInflater.from(context).inflate(R.layout.section_list_item1,null);
}
TextViewtv_name=(TextView)convertView.findViewById(R.id.contact_contactinfoitem_tv_name);
TextViewtv_phone=(TextView)convertView.findViewById(R.id.contact_contactinfoitem_tv_phoneNum);
ContactInfo1confo=contacts.get(position);
if(confo!=null){//toseteveryitem'stext
tv_name.setText(confo.getContactName());
tv_phone.setText(confo.getContact_Phone());
}
returnconvertView;
}
3.下拉刷新
1.要先引入刷新下拉的资源,如果没有的话可以登录www.github.com,在里面搜索pull to refresh后直接下载就可以了,然后倒入项目中,让项目与资源建立联系后就可以像平时使用控件那样就可以了。步骤如下:
把你的library路径倒入后点击下一步就可以了
导入后右击你的项目
然后建立联系
然后就可以直接使用了。
public class PulltorefreshActivity extends AppCompatActivity { private List<String> list_map_date; private ArrayAdapter adapter_pull; private PullToRefreshListView ptlv_main_pulltorefresh; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pulltorefresh); ptlv_main_pulltorefresh = (PullToRefreshListView) findViewById(R.id.ptlv_main_pulltorefresh); //定义数据 list_map_date = new ArrayList<>(); for (int i = 0; i <=20 ; i++) { list_map_date.add("哈思顿"+i); } //创建适配器 adapter_pull = new ArrayAdapter(this,android.R.layout.simple_list_item_1, list_map_date); ptlv_main_pulltorefresh.setAdapter(adapter_pull); ptlv_main_pulltorefresh.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { Toast.makeText(PulltorefreshActivity.this, "刷新页面了", Toast.LENGTH_SHORT).show(); new MyTask().execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { } }); } class MyTask extends AsyncTask{ @Override protected Object doInBackground(Object[] objects) { for (int i = 0; i <4; i++) { list_map_date.add(0,"haha"+i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } return null; } @Override protected void onPostExecute(Object o) { adapter_pull.notifyDataSetChanged(); ptlv_main_pulltorefresh.onRefreshComplete(); super.onPostExecute(o); } }}
- Android高级控件之ListView的优化以及下拉刷新页面
- Android控件ListView下拉刷新之SwipeRefreshLayout
- Android开发之自定义控件--ListView的下拉刷新功能
- android高级控件-下拉刷新
- android之Listview的下拉刷新实现
- Android ——ListView以及scrollView下拉刷新控件的实现
- Android高级控件系列二之第三方控件PullToRefreshListView下拉刷新的使用
- Android之listview下拉刷新
- Android自定义控件之ListView的下拉刷新与上拉加载
- 浅谈Android列表ListView下拉刷新控件的实现(一)
- Android 固定头部的ListView以及下拉刷新(附源码)
- 自定义控件之ListView下拉刷新
- Android 类ListView下拉刷新控件实现
- Android 类ListView下拉刷新控件实现 .
- Android 类ListView下拉刷新控件实现
- android listview 的下拉刷新
- Android listView的下拉刷新
- Android ListView的下拉刷新
- find the mincost rout
- HDU 4960 Another OCD Patient (dp)
- Echarts学习之路 —— echarts介绍
- trait特性
- std::priority_queue 优先队列
- Android高级控件之ListView的优化以及下拉刷新页面
- 组合查询和存储过程
- 从对象和函数(或称构造函数)两个维度理解js中的函数
- 单例模式
- 2的幂次方表示()
- WebView和JS交互
- 游戏开发中的人工智能(九):有限状态机
- 理解TCP/IP,SOCKET,HTTP,FTP,RMI,RPC,webservice等的含义和关系
- Java实现Base64加密