在ExpandableListAdapter的函数getChild()和getGroup() getChildrenCount()添加Log
getChild()
getGroup()
getChildrenCount()
结果没有打出
而getChildId()与getChildView() getGroupId() getGroupView() getGroupCount()都被调用 并打出了log
getChildId()
getChildView()
getGroupId() getGroupView() getGroupCount()
想问问未打出log的3个函数分别在什么时候进行调用以及没有打log的原因
人生最曼妙的风景,竟是内心的淡定与从容!
クリックして GroupItem を展開すると、getChildrenCount() が呼び出され、このグループの子の数が返されます (配列の範囲外エラーを回避するため)。その後、アダプターは を呼び出します。 >getChildView( )。
を呼び出します。 >getChildView( )
@Override public int getChildrenCount(int groupPosition) { Log.d(TAG, "getChildrenCount: groupPosition " + groupPosition); 戻り数; }
ビューを埋めるには getChildView() をオーバーライドする必要があるため、最初にデータを取得する必要があります。getChild() の目的は、対応するデータを取得することです。アダプタの位置データに保存されます。 もちろん、アダプタの外部で子データ リストを管理している場合は、このリストから直接データを取得することもできます。 しかし、getChild() のほうがわかりやすく見えませんか? getGroup() にも同じことが当てはまります。getGroupView() を実行してグループ ビューにデータを入力すると、対応するデータを簡単に取得できます。
getGroupView()
private List mChildItems; @オーバーライド public View getChildView(int groupPosition, int childPosition, boolean isLastChild, ビュー ConvertView、ViewGroup 親) { Log.d(TAG, " getChildView: groupPosition" + groupPosition + ", childPosition " + childPosition); // 次のように動作します: HashMap child = (HashMap)getChild(groupPosition, childPosition); Log.d(TAG, " getChild() からの子データ:" + child.get("サブ項目")); // 次のようにすることもできます: Log.d(TAG, " 私のリストの子データ:" + ((List)mChildItems.get(groupPosition)).get(childPosition)); ビューを返す。 } @オーバーライド public Object getChild(int groupPosition, int childPosition) { Log.d(TAG, " getChild: groupPosition" + groupPosition + ", childPosition " + childPosition); return super.getChild(groupPosition, childPosition); }
一部のメソッド呼び出しのログ:
11-05 12:37:50.322: D/Exp(24030): getChildrenCount: groupPosition 1 11-05 12:37:50.325: D/Exp(24030): getChildView: groupPosition1、childPosition 0 11-05 12:37:50.325: D/Exp(24030): getChild: groupPosition1、childPosition 0 11-05 12:37:50.326: D/Exp(24030): getChild() からの子データ:サブ項目 0 11-05 12:37:50.326: D/Exp(24030): 私のリストの子データ:{サブ項目=サブ項目 0} 11-05 12:37:50.329: D/Exp(24030): getChildView: groupPosition1、childPosition 1 11-05 12:37:50.329: D/Exp(24030): getChild: groupPosition1、childPosition 1 11-05 12:37:50.329: D/Exp(24030): getChild() からの子データ:サブ項目 1 11-05 12:37:50.329: D/Exp(24030): 私のリストの子データ:{サブ項目=サブ項目 1} 11-05 12:37:50.331: D/Exp(24030): getChildView: groupPosition1、childPosition 2 11-05 12:37:50.331: D/Exp(24030): getChild: groupPosition1、childPosition 2 11-05 12:37:50.331: D/Exp(24030): getChild() からの子データ:サブ項目 2 11-05 12:37:50.331: D/Exp(24030): 私のリストの子データ:{Sub item=Sub item 2}
getChild()、getGroup()
Object getItem(intposition)
参照:
この質問に答えるプロジェクトが見つかりました: ANDROID の Expandable ListView
この答えは素晴らしいスタックオーバーフローです - Android クラス BaseAdapter のメソッド getItem および getItemId の目的は何ですか?
android.widget.ExpandableListAdapter ソース コード リンク
stackoverflow - Android ExpandableListView - チュートリアルを探しています
getChildrenCount について
クリックして GroupItem を展開すると、
getChildrenCount()
が呼び出され、このグループの子の数が返されます (配列の範囲外エラーを回避するため)。その後、アダプターはを呼び出します。 >getChildView( )
。getChildView()、getChild()、getGroup() について
ビューを埋めるには
getChildView()
をオーバーライドする必要があるため、最初にデータを取得する必要があります。getChild()
の目的は、対応するデータを取得することです。アダプタの位置データに保存されます。もちろん、アダプタの外部で子データ リストを管理している場合は、このリストから直接データを取得することもできます。
しかし、
getChild()
のほうがわかりやすく見えませんか?getGroup()
にも同じことが当てはまります。getGroupView()
を実行してグループ ビューにデータを入力すると、対応するデータを簡単に取得できます。一部のメソッド呼び出しのログ:
基本的に、ExpandableListAdapter の
getChild()、getGroup()
と android.widget.Adapter のObject getItem(intposition)
は同じものです。「関連付けられたデータ項目を取得します」データセット内の指定された位置に置き換えます。』参照:
この質問に答えるプロジェクトが見つかりました: ANDROID の Expandable ListView
この答えは素晴らしいスタックオーバーフローです - Android クラス BaseAdapter のメソッド getItem および getItemId の目的は何ですか?
android.widget.ExpandableListAdapter ソース コード リンク
stackoverflow - Android ExpandableListView - チュートリアルを探しています