代码之家  ›  专栏  ›  技术社区  ›  S. Cvija

具有不同子级的可扩展列表视图

  •  -1
  • S. Cvija  · 技术社区  · 8 年前

      public override View GetChildView(int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent)
        {
            if (convertView == null)
            {
                LayoutInflater inflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService);
                convertView = inflater.Inflate(Resource.Layout.Children, null);
            }
            if (isLastChild==true)
            {
                EditText Submit = convertView.FindViewById<EditText>(Resource.Id.Submit);
                Button button = convertView.FindViewById<Button>(Resource.Id.Button);
                TextView textViewItem = convertView.FindViewById<TextView>(Resource.Id.DataValue);
                textViewItem.Visibility = ViewStates.Gone;
            }
    
            else {
                TextView textViewItem = convertView.FindViewById<TextView>(Resource.Id.DataValue);
                EditText Submit = convertView.FindViewById<EditText>(Resource.Id.Submit);
                Button button = convertView.FindViewById<Button>(Resource.Id.Button);
                button.Visibility = ViewStates.Gone;
                Submit.Visibility = ViewStates.Gone;
                string content = (string)GetChild(groupPosition, childPosition);
                textViewItem.Text = content;
            }
            return convertView;
        }
    

    1 回复  |  直到 8 年前
        1
  •  1
  •   Elvis Xia - MSFT    8 年前

    这有助于放置编辑文本和按钮,但只在第一组中,同时也切断了第一组中的一些孩子。

    ExpandableListView 重用子视图,因此如果希望最后一行是按钮和编辑文本,则需要将其显式设置为可见。只需将三行代码添加到 GetChildView

    public override View GetChildView(int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent)
    {
        if (convertView == null)
        {
            LayoutInflater inflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService);
            convertView = inflater.Inflate(Resource.Layout.Children, null);
        }
        if (isLastChild == true)
        {
            EditText Submit = convertView.FindViewById<EditText>(Resource.Id.Submit);
            Button button = convertView.FindViewById<Button>(Resource.Id.Button);
    
            //add below two lines to your codes
            Submit.Visibility = ViewStates.Visible;
            button.Visibility = ViewStates.Visible;
    
            TextView textViewItem = convertView.FindViewById<TextView>(Resource.Id.DataValue);
            textViewItem.Visibility = ViewStates.Gone;
        }
        else
        {
            TextView textViewItem = convertView.FindViewById<TextView>(Resource.Id.DataValue);
            EditText Submit = convertView.FindViewById<EditText>(Resource.Id.Submit);
            Button button = convertView.FindViewById<Button>(Resource.Id.Button);
            button.Visibility = ViewStates.Gone;
            Submit.Visibility = ViewStates.Gone;
            //also add below line of codes
            textViewItem.Visibility = ViewStates.Visible;
    
            string content = (string)GetChild(groupPosition, childPosition);
            textViewItem.Text = content;
        }
        return convertView;
    }
    
    推荐文章