Android 动态添加view
第一次写博客,记录一下平时出现bug。
这两天写一个东西,要动态的循环的添加一个layout,走了一点弯路,说实话,我也是一个android菜鸟,好记性不如烂笔头,现在记录下来,以免以后在遇到这样的坑。
进入主题,直接上代码
private void initAttributesView(List attributes) {
// TODO Auto-generated method stub
for (int i = 0; i < attributes.size(); i++) {
//这里一定要new 新的实例,不然怎么运行都添加不了一个wiew;
//View.inflate(context, R.layout.lv_item_service_standar_gv, this);之前这样写,结果怎么都不好使。
GridViewItemView view = new GridViewItemView(ServiceStandardActivity.this);
final ServiceStandOrderByGvAdapter mAdapter = new ServiceStandOrderByGvAdapter(ServiceStandardActivity.this);
TextView attributesName = (TextView) view.findViewById(R.id.service_standar_attrName);
ScrollViewItemGv attributesGv = (ScrollViewItemGv) view.findViewById(R.id.service_standar_gv);
attributesName.setText(attributes.get(i).getAttrName());
mAdapter.setBindData(attributes.get(i).getOptions());
mAdapter.setMapKey(attributes.get(i).getAttrId());
mAdapter.setAdapterCallBack(mCallback);
list.add(mAdapter);
listGv.add(attributesGv);
listGv.get(i).setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
mCarOrder.addView(view);
listGv.get(i).setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
mAdapter.setSeclection(position);
Options options = mAdapter.getItem(position);
setItemView(options, mAdapter);
}
});
}
}
private void setItemView(Options options, ServiceStandOrderByGvAdapter mAdapter) {
if (options != null) {
mCarSelectType.setText(options.getOptionName());
mCarSelectNub.setText(options.getRecommendDesc());
mCarSelectDesc.setText(options.getRecommendDetail());
mCarSelectUseDesc.setText(options.getBrandDesc());
optionIdsMap.put(mAdapter.getMapKey(), options.getOptionId());
if (!TextUtils.isEmpty(options.getDescriptionUrl())) {
morlLoding = options.getDescriptionUrl();
}
if (!TextUtils.isEmpty(options.getRecommendDesc()) && !TextUtils.isEmpty(options.getRecommendDetail())) {
mCarSelectLay.setVisibility(View.VISIBLE);
}
if (!TextUtils.isEmpty(options.getBrandDesc())) {
mServiceStandardButtonLay.setVisibility(View.VISIBLE);
}
}
Animation anim1 = AnimationUtils.loadAnimation(getContext(), R.anim.layout_out_to_left);
mCarSelectLay.setAnimation(anim1);
if (optionIdsMap.size() > 1) {
mCarSelectBuss.setClickable(true);
}
mAdapter.notifyDataSetChanged();
}
//这个就是实例化的layout
public class GridViewItemView extends LinearLayout {
private Context context;
public GridViewItemView(Context c) {
super(c);
// TODO Auto-generated constructor stub
context = c;
initView();
}
private void initView() {
View.inflate(context, R.layout.lv_item_service_standar_gv, this);
}
}
布局文件就不添加 了,这是我们现在开发的项目文件。把主要的思路和代码拿出来就行了、、、