我想显示一个包含多个列的表格,但它不适应手机。因此,我决定使用ListView,其项目由不同的textview构成,每个都代表一列。另外,我在列表视图上方放置了togglebuttons,以使所选列可见或不可见。它工作正常。
然而,当我隐藏一个列时,它仍然是一个空白,其他可见列不会为自己使用这个新空间。那么,如何更改它以便可见列自行调整大小?
这里是我的适配器的getView(我没有列出所有列,它仅用于示例)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.solvent_item, parent, false);
}
TextView name = ViewHolder.get(convertView, R.id.name);
TextView elution = ViewHolder.get(convertView, R.id.elution);
TextView viscosity = ViewHolder.get(convertView, R.id.viscosity);
TextView refraction = ViewHolder.get(convertView, R.id.refraction);
HashMap<String, String> item = getItem(position);
name.setText(item.get(NAME));
elution.setText(item.get(ELUTION));
viscosity.setText(item.get(VISCOSITY));
refraction.setText(item.get(REFRACTION));
if (SolventActivity.elutionChecked) {
elution.setVisibility(View.VISIBLE);
} else {
elution.setVisibility(View.INVISIBLE);
}
if (SolventActivity.viscosityChecked) {//if the toglebutton is on
viscosity.setVisibility(View.VISIBLE);
} else {
viscosity.setVisibility(View.INVISIBLE);
}
if (SolventActivity.refractionChecked) {
refraction.setVisibility(View.VISIBLE);
} else {
refraction.setVisibility(View.INVISIBLE);
}
return convertView;
}
listview项的xml文件只是由几个textview组成。
如果你想要(但它不是最重要的),那么toglleClicked方法:
public void onToggleClicked(View view) {
// Is the toggle on?
boolean on = ((ToggleButton) view).isChecked();
if (on) {
switch ((String) ((ToggleButton) view).getTextOn()) {
case "Elution":
elutionChecked = true;
adapter.notifyDataSetChanged();
break;
case "Viscosity":
viscosityChecked = true;
adapter.notifyDataSetChanged();
break;
case "Refraction":
refractionChecked = true;
adapter.notifyDataSetChanged();
}
} else {
switch ((String) ((ToggleButton) view).getTextOn()) {
case "Elution":
elutionChecked = false;
adapter.notifyDataSetChanged();
break;
case "Viscosity":
viscosityChecked = false;
adapter.notifyDataSetChanged();
break;
case "Refraction":
refractionChecked = false;
adapter.notifyDataSetChanged();
}
非常感谢
答案 0 :(得分:0)
将视图的展示次数设置为View.GONE
,而不是View.INVISIBLE
。
根据文件:
View.GONE此视图不可见,并且不需要任何空间用于布局。
View.INVISIBLE此视图不可见,但仍会占用空间以进行布局。