提问0331

布局
margin :外边距,子控件与父控件的间距;

padding:内边距,控件与其内容的间距

wegiht:权重,控件占剩余大小的比例

layout_gravity: 控件相对父控件父元素的位置

gravity:控件内容的相对位置

异步任务:AsybcTask

AsyncTask是抽象类.AsyncTask定义了三种泛型类型 Params,Progress和Result。
Params 启动任务执行的输入参数,比如HTTP请求的URL。 一般用String类型;
Progress 后台任务执行的百分比。 一般用Integer类型;
Result 后台执行任务最终返回的结果,一般用byte[]或者String。

(1)定义一个类继承AsyncTask
(2)实现AsyncTask中的方法
1、onPerExecute():该方法将在执行实际的后操作前被UI thread调用,是准备工作方
法,如显示一个进度条,进度的对象在这方法声明和设置。
2、doInBackground(Params...):主要将负责耗时工作,可以在这里调用
publishProgress方法来更新实时的任务进度。
3、onProgressUpdate(Progree...):在publishProgress被调用后,UI thread将调用
这个方法在界面展示进度的情况。
4、onPostExecute(Result...): 在doInBackground执行完成后,被UI thread调用,
后台将结果通过这方法传递给UI thread;

BaseAdapter:
定义一个类继承BaseAdapter实现其抽象方法

getCount:获得列表的数量(长度),可以直接list.length;

getItem:获得列表的某一项,list.get(position);

getItemId:获得列表某一项的id,直接返回参数position就可以了;

getView:获得视图
要处理convertView为空和不为空的两种情况
1、convertView == null
 声明一个视图类对象viewHolder = new ViewHolder();
 convertView = getLayoutInflater.inflate(....);
 .........
 convertView.setTag(viewHolder);
2、convertView != null
 viewHolder = convertView.getTag();
3、设置控件内容
 viewHolder.textView.setText(list.get(position).get("name"));


class ViewHolder:一个视图帮助内部类,声明视图的控件;
例:private ImageView imageViiew;
    private TextView textView;


ListView的优化:

1、ListView的布局高度属性设置为非“wrap_content”,如果ListView的布局高度为
“wrap_content”,那么getView()就会重复调用,一个item会被调用4次左右;
2、利用ViewHolder内部类,将item布局文件中需要展示的控件定义为属性,就是把
item中多个控件合为一个整体,可以有效的避免图片错位。
3、convertView:ListView的加载是一个一个item的加载,这样就会每次都inflate一
个item的布局,然后findViewById该布局的所有控件。当数据量大时,是不可想象的
。所以重复利用convertView可以减少填充布局的过程,减少ViewHolder对象实例化的
次数,减少内存的开销,提高性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值