1、布局优化
ReleativeLayout 和 LinearLayout布局的onMeasure效率
viewstub 在listview应用
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
viewHolder.viewStub = (ViewStub) convertView.findViewById(R.id.vs_detail_operations);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
viewHolder.viewStub.setVisibility(View.GONE);
}
viewHolder.rl_list_item.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (viewHolder.viewStub.getVisibility() == View.GONE) { //ViewStub初始状态时Gone
if(viewHolder.viewStub instanceof ViewStub){//ViewStub只能被infalte一次,一旦构建后就变成view了,再次点击就不会执行inflate方法。
viewHolder.viewStub = ((ViewStub)viewHolder.viewStub).inflate();
}
viewHolder.viewStub.setVisibility(View.VISIBLE);
} else {
viewHolder.viewStub.setVisibility(View.GONE);
}
}
});
return convertView;
}
class ViewHolder {
RelativeLayout rl_list_item;// 点击展开或收起ViewStub
View viewStub;// 点击后显示的更多的操作 --注意这里用View作为数据类型,而不用ViewStub的用意!
}