2012-02-06 5 views
0

Это как можно ближе, так как я получил успешное заполнение расширяемого списка из таблицы sqlite.MonoDroid SimpleExpandableListAdapter

public class Today : ExpandableListActivity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     IList<IDictionary<string, object>> parent = new IList<IDictionary<string,object>>(); 
     IList<IList<IDictionary<string, object>>> child = new IList<IList<IDictionary<string,object>>>(); 

     External inst = new External(); 
     var connection = inst.conn(); 
     var c = connection.CreateCommand(); 
     c.CommandText = "Select Distinct Store From Calls"; 
     SqliteDataReader dr = c.ExecuteReader(); 
     if (dr.HasRows) 
      while (dr.Read()) 
      { 
       IDictionary<string, object> pItem = new IDictionary<string,object>(); 
       pItem.Add("Store", dr[0].ToString()); 
       parent.Add(pItem); 
      } 
     dr.Close(); 
     int cnt = parent.Count(); 

     if (cnt > 0) 
     { 
      IList<IDictionary<string, object>> children = new IList<IDictionary<string, object>>(); 
      foreach(IDictionary<string, object> d in parent) 
      { 
       c.CommandText = "Select CallNumber From Calls Where Store = '" + d.Values + "'"; 
       dr = c.ExecuteReader(); 
       while (dr.Read()) 
       { 
        IDictionary<string, object> childItem = new IDictionary<string, object>(); 
        childItem.Add("Call", dr[0].ToString()); 
        children.Add(childItem); 
       } 
       dr.Close(); 
      } 
      child.Add(children); 
     } 

     SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(this, parent, Android.Resource.Layout.SimpleExpandableListItem1, new string[] { "Store" }, new int[] { Android.Resource.Id.Text1, Android.Resource.Id.Text2 }, child, Android.Resource.Layout.SimpleExpandableListItem2, new string[] { "CallNumber" }, new int[] { Android.Resource.Id.Text1, Android.Resource.Id.Text2 }); 
     SetListAdapter(adapter); 
    } 

} 

Это проливает следующие исключения:

  • Не удается создать экземпляр абстрактного класса или интерфейса «System.Collections.Generic.IDictionary <string,object>» X2
  • Не удается создать экземпляр абстрактного класс или интерфейс «System.Collections.Generic.IList <System.Collections.Generic.IDictionary X2

Эти исключения действительно не говорят мне почему он не может создать эти экземпляры или дать мне какое-либо представление о том, что я делаю неправильно.

ответ

2

Это ошибки сборки, а не исключения. Причина, по которой вы их получаете, заключается в том, что вы не можете создать экземпляр интерфейса на C#. Вместо этого вам нужно создать экземпляр объекта, который реализует необходимый вам интерфейс. Например, используя те в вашем коде:

IDictionary<string, object> pItem = new Dictionary<string,object>(); 

IList<IDictionary<string, object>> children = new List<IDictionary<string, object>>(); 

Это справедливо, потому что Dictionary<TKey, TValue> реализует IDictionary<TKey, TValue> и List<T> реализует IList<T>.

 Смежные вопросы

  • Нет связанных вопросов^_^