I want to display data in linear layout which is dynamic but the issue is I have 4 columns of which 1st column header is static and rest 3 are dynamic.I know how to set header dynamic what I want to know is how to set both static and dynamic in single layout. My code
private void addSizeGuideTable (ProductSizingDetail productSizingDetail){
for (int i = 0; i < productSizingDetail.getSizeGuideList().size(); i++) {
SizeGuides sizeGuides = productSizingDetail.getSizeGuideList().get(i);
if (i == 0) {
addColumn(sizeGuides, true, false);
} else if (i == productSizingDetail.getSizeGuideList().size() - 1) {
addColumn(sizeGuides, false, true);
} else {
addColumn(sizeGuides, true, true);
}
}
}
private void addColumn(SizeGuides sizeGuides, boolean rightBorder, boolean leftBorder) {
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
linearLayout.setBackgroundColor(Color.parseColor("#d8d8d8"));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1);
linearLayout.setLayoutParams(params);
if (rightBorder && leftBorder) {
linearLayout.setPadding(1, 0, 1, 0);
} else if (rightBorder && !leftBorder) {
linearLayout.setPadding(0, 0, 1, 0);
} else {
linearLayout.setPadding(1, 0, 0, 0);
}
addHeaders(sizeGuides, linearLayout);
addRow(sizeGuides, linearLayout);
((LinearLayout) findViewById(R.id.layout_size_guide)).addView(linearLayout);
}
private void addHeaders(SizeGuides sizeGuides, LinearLayout linearLayout) {
TextView tv = new TextView(this);
tv.setText(sizeGuides.getDimension());
tv.setBackgroundColor(Color.parseColor("#f8f8f8"));
tv.setSingleLine();
tv.setGravity(Gravity.CENTER);
tv.setPadding(0, 10, 0, 10);
tv.setTypeface(TypeFaceProvider.heavy(this));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 0, 0, 1);
tv.setLayoutParams(params);
linearLayout.addView(tv);
}
private void addRow(SizeGuides sizeGuides, LinearLayout linearLayout) {
for (int i = 0; i < sizeGuides.getDimensionList().size(); i++) {
DimensionItem dimension = sizeGuides.getDimensionList().get(i);
TextView tv = new TextView(this);
if(dimension.getDimensionUnit().equalsIgnoreCase("INCH")) {
tv.setText(dimension.getDimensionValue()+"\" ");
}else{
tv.setText(dimension.getDimensionValue());
}
tv.setBackgroundColor(Color.parseColor("#f8f8f8"));
tv.setSingleLine();
tv.setGravity(Gravity.CENTER);
tv.setPadding(0, 10, 0, 10);
tv.setTypeface(TypeFaceProvider.light(this));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
if (i == sizeGuides.getDimensionList().size() - 1) {
params.setMargins(0, 1, 0, 0);
} else {
params.setMargins(0, 1, 0, 1);
}
tv.setLayoutParams(params);
linearLayout.addView(tv);
}
}
You could use a count to add the header.
private static headerSetupCounter =0;
In your private void addColumn(SizeGuides sizeGuides, boolean rightBorder, boolean leftBorder)
if(headerSetupCounter == 0)
addHeaders(YourCustomSizeGuide, linearLayout);
else
addHeaders(sizeGuides, linearLayout);
headerSetupCounter++;
You could also implement your custom sizing (or static as you refer to it) in your addSizeGuideTable
where you check for the column.
if (i == 0) {
// addColumn(sizeGuides, true, false);
// Implement customised "static" column.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.