私は同じことについてSOに関するいくつかの質問に出くわし、それらを試しました。3レベルExpandableListView Android
2つのレベルを展開可能なリストに表示できますが、2番目のレベルをクリックすると3番目のレベルを表示できません。
私はそうのようなものを試してみました: -
ParentView(ファーストレベル)
public class ParentView : BaseExpandableListAdapter
{
public static int FIRST_LEVEL_COUNT = 6;
public static int SECOND_LEVEL_COUNT = 4;
public static int THIRD_LEVEL_COUNT = 10;
private Context context;
public ParentView(Context context)
{
this.context = context;
}
public ParentView()
{
}
public override Java.Lang.Object GetChild(int groupPosition, int childPosition)
{
return childPosition;
}
public override long GetChildId(int groupPosition, int childPosition)
{
return childPosition;
}
public override View GetChildView(int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent)
{
var SecondLevelexplv = new CustExpListview(Application.Context);
SecondLevelexplv.SetAdapter(new SecondLevelAdapter(context));
SecondLevelexplv.SetGroupIndicator(null);
return SecondLevelexplv;
}
public override int GetChildrenCount(int groupPosition)
{
return 3;
}
public override Java.Lang.Object GetGroup(int groupPosition)
{
return groupPosition;
}
public override int GroupCount
{
get
{
return 5;
}
}
public override long GetGroupId(int groupPosition)
{
return groupPosition;
}
public override View GetGroupView(int groupPosition, bool isExpanded, View convertView, ViewGroup parent)
{
var tv = new TextView(Application.Context)
{
Text = "->FirstLevel",
};
tv.SetBackgroundColor(Color.Blue);
tv.SetPadding(10, 7, 7, 7);
return tv;
}
public override bool IsChildSelectable(int groupPosition, int childPosition)
{
return true;
}
public override bool HasStableIds
{
get
{
return true;
}
}
}
CustExpListView
public class CustExpListview : ExpandableListView
{
public CustExpListview(Context context) : base(context)
{
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
widthMeasureSpec = MeasureSpec.MakeMeasureSpec(999999, MeasureSpecMode.AtMost);
heightMeasureSpec = MeasureSpec.MakeMeasureSpec(999999, MeasureSpecMode.AtMost);
OnMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
SecondLevelAdapter
public class SecondLevelAdapter : BaseExpandableListAdapter
{
public static int THIRD_LEVEL_COUNT = 10;
private Context context;
private readonly ParentView parentView;
public SecondLevelAdapter(Context context)
{
this.context = context;
}
public SecondLevelAdapter(ParentView parentView)
{
this.parentView = parentView;
}
public override Java.Lang.Object GetGroup(int groupPosition)
{
return groupPosition;
}
public override int GroupCount
{
get
{
return 5;
}
}
public override long GetGroupId(int groupPosition)
{
return groupPosition;
}
public override View GetGroupView(int groupPosition, bool isExpanded, View convertView, ViewGroup parent)
{
var tv = new TextView(Application.Context)
{
Text = "-->Second"
};
tv.SetPadding(12, 7, 7, 7);
tv.SetBackgroundColor(Color.GreenYellow);
return tv;
}
public override Java.Lang.Object GetChild(int groupPosition, int childPosition)
{
return childPosition;
}
public override long GetChildId(int groupPosition, int childPosition)
{
return childPosition;
}
public override View GetChildView(int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent)
{
var tv = new TextView(Application.Context)
{
Text = "third"
};
tv.SetPadding(18, 5, 5, 5);
tv.SetBackgroundColor(Color.Green);
return tv;
}
public override int GetChildrenCount(int ChildPosition)
{
return 4;
}
public override bool IsChildSelectable(int groupPosition, int childPosition)
{
return true;
}
public override bool HasStableIds
{
get
{
return true;
}
}
}
私が気づいたのはGetGroup()
が呼び出されてもSecondLevelAdapter
のGetChildView()
が呼び出されないことです。私は実際にリストを4レベルまで拡大したいと思っていますが、私は第3レベルそのものに固執しています。
何か助けていただければ幸いです。
4レベルの拡張リストをモバイル?私は、[this]のようにモバイルフレンドリーに見えるようにデザインを再考するかもしれないと思う(https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/images/patterns-md-stacked.png)。 )。 –
@R.Zagórskiうまくいけば、顧客はその妥協の余地のない種類の要求を持っています:) – user3034944