Android 在 BaseExpandableListAdapter 中隐藏子视图

Android hide childView in BaseExpandableListAdapter

我在我的应用程序中使用 BaseExpandableListAdapter 来显示公司名称列表。当您单击公司名称时,应显示第二个公司分支机构列表。

列表背后的数据结构是一个字符串数组[companies][branches]。

由于数组的选择,我在使用之前必须实例化它。每个公司的分支机构永远不会超过 10 个,所以我将其声明为 arr[companyListLength][10];

问题是当一个公司的分支机构少于10个时,子列表中有空行。

如果行中的数据为空,我尝试将 convertView 设置为空。

我也试过设置 convertView.setVisibility(View.Gone)

但都不起作用。

如果没有数据,如何隐藏子列表中的行?

public class ExpAdapter extends BaseExpandableListAdapter {

      private Context myContext;
      public ExpAdapter(Context context) {
       myContext = context;
      }
      @Override
      public Object getChild(int groupPosition, int childPosition) {
       return null;
      }

      @Override
      public long getChildId(int groupPosition, int childPosition) {
       return 0;
      }

      @Override
      public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {

       if (convertView == null) {
        LayoutInflater inflater =  (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.child_row, null);
       }

       TextView tvPlayerName = (TextView) convertView.findViewById(R.id.tvPlayerName);
       tvPlayerName.setText(arrChildelements[groupPosition][childPosition]);

       if(arrChildelements[groupPosition][childPosition] == null){

           Log.e(TAG, "child null");
       }else{
         Log.e(TAG, "child not null");
       }

       return convertView;
      }

      @Override
      public int getChildrenCount(int groupPosition) {
       return arrChildelements[groupPosition].length;
      }

      @Override
      public Object getGroup(int groupPosition) {
       return null;
      }

      @Override
      public int getGroupCount() {
       return arrGroupelements.length;
      }

      @Override
      public long getGroupId(int groupPosition) {
       return 0;
      }

      @Override
      public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {

       if (convertView == null) {
        LayoutInflater inflater =  (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.group_row, null);
       }

       TextView tvGroupName = (TextView) convertView.findViewById(R.id.tvGroupName);
       tvGroupName.setText(arrGroupelements[groupPosition]);

       return convertView;
      }

      @Override
      public boolean hasStableIds() {
       return false;
      }

      @Override
      public boolean isChildSelectable(int groupPosition, int childPosition) {
       return true;
      }
     }

在 getChildrenCount(int groupPosition) return 中非空子项的计数,类似于:

@Override
public int getChildrenCount(int groupPosition) {
  int count = 0;
  for (int i = 0; i < arrChildelements[groupPosition].length; i++)
    count += arrChildelements[groupPosition][i] != null ? 1 : 0;
  return count;
}