2011-12-29 9 views
1

http://techdroid.kbeanie.com/2010/09/expandablelistview-on-android.htmlを実行しようとしていますが、monodroidを使用していますが、私の問題はJavaでプログラムするのに使用されていますが、私は問題をBaseAmpandListList groupPositionとchildPositionをリストから入れてください。どうすればこの問題を解決できますか?ExpandableListViewモノラル用

+0

私は質問をよく理解しているとは思わない。どのようにJavaコードでそれをやりますか? –

答えて

6

ExpandableListAdapterを作成する際の問題は、このメソッドでは返さなければならないということです。Java.Lnag.Object.私はあなたのjavaの例を動作させることができませんでした。

ただし、SimpleExpandableListAdapterクラスを使用する代わりにExpandableListAdapterを定義せずにExpandableListViewを使用する例を示します。

この例ではExpandableListViewを使用することができますが、BaseExpandableListAdapterに付属する柔軟性は増しません。

using System; 
using System.Collections.Generic; 

using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 

namespace Scratch.ExpandableListActivity 
{ 
    [Activity (Label = "Scratch.ExpandableListActivity", MainLauncher = true)] 
    public class Activity1 : Android.App.ExpandableListActivity 
    { 
     IExpandableListAdapter mAdapter; 
     const string Name = "NAME"; 
     const string IsEven = "IS_EVEN"; 

     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      using (var groupData = new JavaList<IDictionary<string, object>>()) 
      using (var childData = new JavaList<IList<IDictionary<string, object>>>()) { 
       for (int i = 0; i < 20; i++) { 
        using (var curGroupMap = new JavaDictionary<string, object>()) { 
         groupData.Add(curGroupMap); 
         curGroupMap.Add(Name, "Group " + i); 
         curGroupMap.Add(IsEven, (i % 2 == 0) ? "This group is even" : "This group is odd"); 
         using (var children = new JavaList<IDictionary<string, object>>()) { 
          for (int j = 0; j < 15; j++) { 
           using (var curChildMap = new JavaDictionary<string, object>()) { 
            children.Add(curChildMap); 
            curChildMap.Add(Name, "Child " + j); 
            curChildMap.Add(IsEven, (j % 2 == 0) ? "This child is even" : "This child is odd"); 
           } 
          } 
          childData.Add(children); 
         } 
        } 
       } 
       // Set up our adapter 
       mAdapter = new SimpleExpandableListAdapter (
         this, 
         groupData, 
         Android.Resource.Layout.SimpleExpandableListItem1, 
         new string[] { Name, IsEven}, 
         new int[] { Android.Resource.Id.Text1, Android.Resource.Id.Text2 }, 
         childData, 
         Android.Resource.Layout.SimpleExpandableListItem2, 
         new string[] { Name, IsEven }, 
         new int[] { Android.Resource.Id.Text1, Android.Resource.Id.Text2 } 
         ); 
       SetListAdapter(mAdapter); 
      } 
     } 
    } 
} 
+0

これをフラグメントでどのように使用しますか? – MikeOscarEcho

0

前4.2(4.0.6など)にAndroidのためのMonoを使用して、バージョン、それは次のようにすべきである:

using System; 
using Android.App; 
using Android.Content; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.OS; 
using System.Collections.Generic; 
namespace MonoAndroidApplication2 
{ 
    [Activity(Label = "Expandable List Activity", MainLauncher = true)] 
    public class Activity1 : ExpandableListActivity 
    { 
     IExpandableListAdapter mAdapter; 
     String NAME = "NAME"; 
     String IS_EVEN = "IS_EVEN"; 
     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      List< IDictionary <String , object >> groupData = new List< IDictionary < string , object >>(); 
      List< IList<IDictionary< String, object>>> childData = new List < IList < IDictionary < string, object>>>(); 
      for (int i = 0; i < 20; i++) 
      { 
       Dictionary< String, object > curGroupMap = new Dictionary < string , object >(); 
       groupData.Add(curGroupMap); 
       curGroupMap.Add(NAME, "Group " + i); 
       curGroupMap.Add(IS_EVEN, (i % 2 == 0) ? "This group is even" : "This group is odd"); 
       List< IDictionary <String , object >> children = new List< IDictionary < string , object >>(); 
       for (int j = 0; j < 15; j++) 
       { 
        Dictionary< String, object > curChildMap = new Dictionary < string , object >(); 
        children.Add(curChildMap); 
        curChildMap.Add(NAME, "Child " + j); 
        curChildMap.Add(IS_EVEN, (j % 2 == 0) ? "This child is even" : "This child is odd"); 
       } 
       childData.Add(children); 
      } 
      // Set up our adapter 
      mAdapter = new SimpleExpandableListAdapter (
        this, 
        groupData, 
        Android.Resource.Layout.SimpleExpandableListItem1, 
        new String[] { NAME, IS_EVEN }, 
        new int[] { Android.Resource.Id.Text1, Android.Resource.Id.Text2 }, 
        childData, 
        Android. Resource. Layout.SimpleExpandableListItem2, 
        new String[] { NAME, IS_EVEN }, 
        new int[] { Android.Resource .Id.Text1, Android.Resource.Id.Text2 } 
        ); 
      SetListAdapter(mAdapter); 
     } 
    } 
} 

このコード約任意のおかげでは、著者、lanksにあります。

+0

それはそうかもしれません。 4.0.1と4.0.1の間の変更を最小限に抑えるために、4.0.6でも「更新された4.2.1」の回答が4.0.6でも有効であるはずです。 – jonp