Android Listview с несколькими столбцами - PullRequest
1 голос
/ 16 марта 2012

Я пытаюсь создать C # Android Listview, который поддерживает несколько столбцов.Я нашел некоторый код, как сделать Listview здесь: http://www.heikkitoivonen.net/blog/2009/02/15/multicolumn-listview-in-android/

Однако это код Java, поэтому я преобразовал его в C # следующим образом:

        // List view control
        ListView list = (ListView) FindViewById(Resource.Id.mylist);
        List<Dictionary<string, string>> mylist = new List<Dictionary<string, string>>();
        Dictionary<string, string> map = new Dictionary<string, string>();

        map.Add("Profit Centre", "Systems");
        map.Add("Last Updated", "16/02/2012 15:34");
        mylist.Add(map);
        map = new Dictionary<string, string>();
        map.Add("Profit Centre", "IDTS");
        map.Add("Last Updated", "20/02/2012 10:26");
        mylist.Add(map);

        SimpleAdapter mSchedule = new SimpleAdapter(this, mylist, Resource.Layout.list_item,new String[] {"Profit Centre", "Lasted Updated",}, new int[] { Resource.Id.columnA,  Resource.Id.columnB});

        list.Adapter = mSchedule;

SimpleAdapter жалуется, что второй параметрэто неверно.Он сообщает об этом

ОШИБКА 1 =

Лучший перегруженный метод соответствует для Android.Widget.SimpleAdapter.SimpleAdapter (Android.Content.Context, System.Collections.Generic.IList>, int,Строка [], int []) 'имеет недопустимые аргументы

ОШИБКА 2 =

Аргумент 2: невозможно преобразовать из' System.Collections.Generic.List> 'в' System.Collections.Generic.IList> '

Почему это?Пожалуйста, не могли бы вы помочь мне, поскольку я исследовал с помощью Google, чтобы увидеть, есть ли способы создания Listview (для Android) с несколькими столбцами, но не может найти ни одного в C #, только код Java.

Спасибо,

Эндрю Эшкрофт

Ответы [ 2 ]

1 голос
/ 27 марта 2012

У вас есть несоответствие между определением mylist и ожидаемым списком в Android SimpleAdapter

Измените свой код на следующий;

         // List view control  
        ListView list = (ListView)FindViewById(Resource.Id.mylist);
        IList<IDictionary<string, object>> mylist = new List<IDictionary<string, object>>();
        IDictionary<string, object> map = new Dictionary<string, object>();
        map.Add("Profit Centre", "Systems");       
        map.Add("Last Updated", "16/02/2012 15:34");       
        mylist.Add(map);       
        map = new Dictionary<string, object>()>;      
        map.Add("Profit Centre", "IDTS");       
        map.Add("Last Updated", "20/02/2012 10:26");       
        mylist.Add(map);       

        SimpleAdapter mSchedule = new SimpleAdapter(this, mylist, Resource.Layout.list_item,new String[] {"Profit Centre", "Lasted Updated",}, new int[] { Resource.Id.columnA,  Resource.Id.columnB});       

        ListAdapter = mSchedule;

Если ваша деятельность реализует ListActivity, вы должны заменить строку

list.Adapter = mSchedule;

с

ListAdapter = mSchedule;

С уважением,

Шалом Кейнан

0 голосов
/ 19 марта 2012

Кажется, что возможно использовать адаптер CustomList, как описано здесь: http://redth.info/2010/10/12/monodroid-custom-listadapter-for-your-listview

Я изменил это, поэтому у него просто есть два столбца, центр прибыли и последнее обновление.

...