setvisibility VIEW.GONE 如果 textview 在使用 viewholder 的列表视图中为空
setvisibility VIEW.GONE if textview is empty in a listview using viewholder
我有一个使用自定义 ArrayAdapter 的列表视图,使用 viewholder class 模式。在每个 row_layout 中,有 2 个文本视图 A 和 B。我想要做的是,当该列表项中的任何一个文本视图为空时。该特定行的视图应该消失并且不占用任何 space。
如果其中一个列表项的文本视图 A 为空,即使某些列表项在文本视图 A 中有文本,以下代码也会导致所有文本视图 A 消失。同样,如果列表项之一的文本视图为空B、列表视图中的所有项目都将消失。
我该如何解决这个问题?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.custom_row_layout, parent, false);
vh = new ViewHolder();
vh.drugBrandName = (TextView) convertView.findViewById(R.id.drugBrandName);
vh.drugOtherName = (TextView) convertView.findViewById(R.id.drugOtherName);
convertView.setTag(vh);
} else
vh = (ViewHolder) convertView.getTag();
CustomDrugItem di = itemsArrayList.get(position);
if (di.getDrugBrandName().equals("")) {
vh.drugBrandName.setVisibility(View.GONE);
}
if (di.getDrugOtherName().equals("")) {
vh.drugOtherName.setVisibility(View.GONE);
}
return convertView;
}
static class ViewHolder {
private TextView drugBrandName;
private TextView drugOtherName;
}
如果文本不为空,请尝试将可见性设置为 VISIBLE。
if (di.getDrugBrandName().equals("")) {
vh.drugBrandName.setVisibility(View.GONE);
} else {
vh.drugBrandName.setVisibility(View.VISIBLE);
}
if (di.getDrugOtherName().equals("")) {
vh.drugOtherName.setVisibility(View.GONE);
} else {
vh.drugOtherName.setVisibility(View.VISIBLE);
}
你应该把两种状态(可见和消失)都放在因为你正在使用 ViewHolder 模式:
vh.drugOtherName.setVisibility(TextUtils.isEmpty(di.getDrugOtherName()) ? View.GONE : View.VISIBLE);
vh.drugBrandName.setVisibility(TextUtils.isEmpty(di.getDrugBrandName()) ? View.GONE : View.VISIBLE);
我有一个使用自定义 ArrayAdapter 的列表视图,使用 viewholder class 模式。在每个 row_layout 中,有 2 个文本视图 A 和 B。我想要做的是,当该列表项中的任何一个文本视图为空时。该特定行的视图应该消失并且不占用任何 space。
如果其中一个列表项的文本视图 A 为空,即使某些列表项在文本视图 A 中有文本,以下代码也会导致所有文本视图 A 消失。同样,如果列表项之一的文本视图为空B、列表视图中的所有项目都将消失。
我该如何解决这个问题?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.custom_row_layout, parent, false);
vh = new ViewHolder();
vh.drugBrandName = (TextView) convertView.findViewById(R.id.drugBrandName);
vh.drugOtherName = (TextView) convertView.findViewById(R.id.drugOtherName);
convertView.setTag(vh);
} else
vh = (ViewHolder) convertView.getTag();
CustomDrugItem di = itemsArrayList.get(position);
if (di.getDrugBrandName().equals("")) {
vh.drugBrandName.setVisibility(View.GONE);
}
if (di.getDrugOtherName().equals("")) {
vh.drugOtherName.setVisibility(View.GONE);
}
return convertView;
}
static class ViewHolder {
private TextView drugBrandName;
private TextView drugOtherName;
}
如果文本不为空,请尝试将可见性设置为 VISIBLE。
if (di.getDrugBrandName().equals("")) {
vh.drugBrandName.setVisibility(View.GONE);
} else {
vh.drugBrandName.setVisibility(View.VISIBLE);
}
if (di.getDrugOtherName().equals("")) {
vh.drugOtherName.setVisibility(View.GONE);
} else {
vh.drugOtherName.setVisibility(View.VISIBLE);
}
你应该把两种状态(可见和消失)都放在因为你正在使用 ViewHolder 模式:
vh.drugOtherName.setVisibility(TextUtils.isEmpty(di.getDrugOtherName()) ? View.GONE : View.VISIBLE);
vh.drugBrandName.setVisibility(TextUtils.isEmpty(di.getDrugBrandName()) ? View.GONE : View.VISIBLE);