实现
动态布局
省略
主布局
<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());
}