动添View

实现

动态布局

省略

主布局

<ScrollView
    android:id="@+id/svDataEntryFinishingAgent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/vDataEntryFinishingAgent"
    android:background="@color/cutOffRule"
    android:scrollbars="none">

    <LinearLayout
        android:id="@+id/llDataEntryFinishingAgentContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" />
</ScrollView>

主代码

/**
 * 添加
 *
 * @param view 视图
 */
@SuppressLint("SetTextI18n")
private void add(View view) {
    if (llDataEntryFinishingAgentContainer.getChildCount() == 0) {
        View contentView = View.inflate(getContext(), R.layout.data_entry_finishing_agent, null);
        // 标题
        TextView tvDataEntryFinishingAgentTitle = contentView.findViewById(R.id.tvDataEntryFinishingAgentTitle);
        tvDataEntryFinishingAgentTitle.setText(getString(R.string.useRecord) + "1");
        // 添加
        TextView tvDataEntryFinishingAgentAction = contentView.findViewById(R.id.tvDataEntryFinishingAgentAction);
        tvDataEntryFinishingAgentAction.setText(R.string.add);
        tvDataEntryFinishingAgentAction.setTag(Magic.STRING_ADD);
        tvDataEntryFinishingAgentAction.setOnClickListener(this);
        // 一个都没时添加一个
        llDataEntryFinishingAgentContainer.addView(contentView);
        // 选择
        TextView tvDataEntryFinishingAgentCodeChoose = contentView.findViewById(R.id.tvDataEntryFinishingAgentCodeChoose);
        tvDataEntryFinishingAgentCodeChoose.setTag(0);
        TextView tvDataEntryFinishingAgentUnivalentChoose = contentView.findViewById(R.id.tvDataEntryFinishingAgentUnivalentChoose);
        tvDataEntryFinishingAgentUnivalentChoose.setTag(0);
        TextView tvDataEntryFinishingAgentManufacturerChoose = contentView.findViewById(R.id.tvDataEntryFinishingAgentManufacturerChoose);
        tvDataEntryFinishingAgentManufacturerChoose.setTag(0);
        tvDataEntryFinishingAgentCodeChoose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               clickPosition = (int) v.getTag();
            }
        });
        tvDataEntryFinishingAgentUnivalentChoose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               clickPosition = (int) v.getTag();
            }
        });
        tvDataEntryFinishingAgentManufacturerChoose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               clickPosition = (int) v.getTag();
            }
        });
    } else if (view != null && Magic.STRING_ADD.equals(view.getTag())) {
        // 一个以上时点添加的Item才添加
        View hotelEvaluateView = View.inflate(getContext(), R.layout.data_entry_finishing_agent, null);
        llDataEntryFinishingAgentContainer.addView(hotelEvaluateView);
        addSort();           
    }
}
/**
 * 添加排序
 */
@SuppressLint("SetTextI18n")
private void addSort() {
    // 容器所有视图
    for (int i = 0; i < llDataEntryFinishingAgentContainer.getChildCount(); i++) {
        final View childView = llDataEntryFinishingAgentContainer.getChildAt(i);
        childView.setTag(i);
        // 标题
        TextView tvDataEntryFinishingAgentTitle = childView.findViewById(R.id.tvDataEntryFinishingAgentTitle);
        tvDataEntryFinishingAgentTitle.setText(getString(R.string.useRecord) + (i + 1));
        // 删除
        TextView tvDataEntryFinishingAgentAction = childView.findViewById(R.id.tvDataEntryFinishingAgentAction);
        tvDataEntryFinishingAgentAction.setText(R.string.delete);
        tvDataEntryFinishingAgentAction.setTag(Magic.STRING_REMOVE);
        tvDataEntryFinishingAgentAction.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 容器删除当前点击视图
                llDataEntryFinishingAgentContainer.removeView(childView);
                // 删除后标题重新排序
                addSort();
            }
        });
        // 最后一个设为添加
        if (i == (llDataEntryFinishingAgentContainer.getChildCount() - 1)) {
            // 添加
            tvDataEntryFinishingAgentAction.setText(R.string.add);
            tvDataEntryFinishingAgentAction.setTag(Magic.STRING_ADD);
            tvDataEntryFinishingAgentAction.setOnClickListener(this);
        }
        // 选择
        TextView tvDataEntryFinishingAgentCodeChoose = childView.findViewById(R.id.tvDataEntryFinishingAgentCodeChoose);
        tvDataEntryFinishingAgentCodeChoose.setTag(i);
        TextView tvDataEntryFinishingAgentUnivalentChoose = childView.findViewById(R.id.tvDataEntryFinishingAgentUnivalentChoose);
        tvDataEntryFinishingAgentUnivalentChoose.setTag(i);
        TextView tvDataEntryFinishingAgentManufacturerChoose = childView.findViewById(R.id.tvDataEntryFinishingAgentManufacturerChoose);
        tvDataEntryFinishingAgentManufacturerChoose.setTag(i);
        tvDataEntryFinishingAgentCodeChoose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               clickPosition = (int) v.getTag();  
            }
        });
        tvDataEntryFinishingAgentUnivalentChoose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               clickPosition = (int) v.getTag(); 
            }
        });
        tvDataEntryFinishingAgentManufacturerChoose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               clickPosition = (int) v.getTag();
            }
        });
    }
}
/**
 * 收集动态添加视图数据
 */
private void dataCollect() {
    for (int i = 0; i < llDataEntryFinishingAgentContainer.getChildCount(); i++) {
        View childView = llDataEntryFinishingAgentContainer.getChildAt(i);
        TextView tvDataEntryFinishingAgentCodeChoose = childView.findViewById(R.id.tvDataEntryFinishingAgentCodeChoose);
        TextView tvDataEntryFinishingAgentUnivalentChoose = childView.findViewById(R.id.tvDataEntryFinishingAgentUnivalentChoose);
        TextView tvDataEntryFinishingAgentManufacturerChoose = childView.findViewById(R.id.tvDataEntryFinishingAgentManufacturerChoose);
        EditText etDataEntryFinishingAgentAmount = childView.findViewById(R.id.etDataEntryFinishingAgentAmount);                                         
    }
}
/**
 * 数据回显
 *
 * @param position              位置
 * @param drillingFluidMaterial 数据
 */
    private void dataShow(int position, DrillingFluidMaterial drillingFluidMaterial) {
    LogUtils.e(llDataEntryFinishingAgentContainer.getChildCount());
    View childView = llDataEntryFinishingAgentContainer.getChildAt(position);
    TextView tvDataEntryFinishingAgentCodeChoose = childView.findViewById(R.id.tvDataEntryFinishingAgentCodeChoose);
    TextView tvDataEntryFinishingAgentUnivalentChoose = childView.findViewById(R.id.tvDataEntryFinishingAgentUnivalentChoose);
    TextView tvDataEntryFinishingAgentManufacturerChoose = childView.findViewById(R.id.tvDataEntryFinishingAgentManufacturerChoose);
    tvDataEntryFinishingAgentCodeChoose.setText(drillingFluidMaterial.getDh());
    tvDataEntryFinishingAgentUnivalentChoose.setText(drillingFluidMaterial.getDj());
    tvDataEntryFinishingAgentManufacturerChoose.setText(drillingFluidMaterial.getCj());
}

参考

猜你喜欢

转载自blog.csdn.net/zsp_android_com/article/details/81121374