事件监听、ListView的优化及使用

一、ListView的优化&使用

*ListView的优化:ListView的优化主要包括两个方面,分别是对自身的优化以及其适配器(Adapter)的优化。
1、使用ViewHolder模式来提高效率
Viewholder模式充分了ListView的视图缓存机制,避免了每次在调用getView的时候都去通过findViewById实例化数据。

2、异步加载:耗时的操作放在异步线程中
如果在adapter中的某些操作需要耗费大量的时间,个时候就要用到异步线程来进行异步就在数据。
a.一种是通过多线程方式通过Handler+Message进行异步加载
b.另一种是通过AsyncTask来进行异步操作

3、listView错位加载问题

*ListView的使用
(1)ListView 分割线的高度和颜色设置。
android:pider:设置颜色,背景 android:piderHeight:设置高度
如果设置无分割线,可以设置android:pider="@null"。
该两个属性必须同时使用,如果只设置pider,则没有效果,同时默认的分割线也会消失。
(2)ListView的滚动
(3)隐藏ListView 的滚动条
android:scrollbars=“none”
(4)取消ListView的点击反馈效果
android:listSelector="#0000":点击颜色设置为透明
(5)ListView 下拉顶部空白回弹效果
(6)ListView 的上拉加载和下拉刷新

二、事件监听的优化

  假设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);

猜你喜欢

转载自blog.csdn.net/Ann257725/article/details/82817304