ListView的使用及优化

1 使用ConvertView重用组件

即拖动时被遮住、看不见的控件,重用它,而非每次创建一个新的对象

2 使用内部类ViewHolder+ConvertView.setTag()保存控件,而不用每次查找 ViewHolder(视图的持有者)

3 使用分页查询(PullToRefresh)

使用AsyncTask(异步任务)加载数据,最少要重写以下这两个方法
-doInBackground
后台执行
-onPostExecute
在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置
关键代码:
myListViewAdapter.notifyDataSetChanged();// 通知适配器数据已改变
ptrlv_main_1.onRefreshComplete();// 通知控件数据已经加载完毕

4 事件监听的优化

  假设Item中有三个按钮,要为三个按钮定义事件,如果是下面这样
  btn1.setOnclickListener(new View.onClickListener(){
     public void onClick(View view){
         //...
     }
  });
  btn2.setOnclickListener(new View.onClickListener(){
     public void onClick(View view){
         //...
     }
  });
  btn3.setOnclickListener(new View.onClickListener(){
     public void onClick(View view){
         //...
     }
  });
  如果每屏显示10个Item,那一共创建了30个listener对象在内存中。
  如果,你是在Adapter创建时,只创建一个Listener,并将其定义成全局属性,
  然后通过按钮的ID来进行判断是哪个事件应该触发,
  class MyAdapter extends BaseAdapter{
     View.onClickListener myListener = new View.onClickListener(){
       public void onClick(View view){
         if(view.getId() == R.id.btn1){
           //...
         }else if(view.getId() == R.id.btn2){
           //...
         }else if(view.getId() == R.id.btn3){
           //...
         }
       }
     });
    }

    //注册监听器
    btn1.setOnclickListener(myListener);
    btn2.setOnclickListener(myListener);
    btn3.setOnclickListener(myListener);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值