具有不同 children 的可扩展列表视图
Expandable List view with different children
我正在尝试制作每个组的最后一个 child 并编辑文本和按钮。我正在使用自定义 ExpandableListViewAdapter。这是我目前所拥有的。
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;
}
这有助于放置 EditText 和 Button,但仅限于第一组,同时还切断了第一组中的一些 children。
This helps put a EditText and Button but only in the first group while also cutting off some of the children in the first group.
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;
}
我正在尝试制作每个组的最后一个 child 并编辑文本和按钮。我正在使用自定义 ExpandableListViewAdapter。这是我目前所拥有的。
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;
}
这有助于放置 EditText 和 Button,但仅限于第一组,同时还切断了第一组中的一些 children。
This helps put a EditText and Button but only in the first group while also cutting off some of the children in the first group.
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;
}