Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Dmitrin
23 / 23 / 11
Регистрация: 04.12.2012
Сообщений: 575
1

Переопределение ViewBinder на C#

18.10.2015, 22:10. Просмотров 238. Ответов 1
Метки нет (Все метки)

Здравствуйте. Пытаюсь сделать урок, только на C# на VS13 с Xamarin.

Код MainActivity

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
[Activity(Label = "BinderAdapterAndProgressBar", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        const String ATTRIBUTE_NAME_TEXT = "text";
        const String ATTRIBUTE_NAME_PB = "pb";
        const String ATTRIBUTE_NAME_LL = "ll";
        static Color red = Android.Graphics.Color.Red, orange = Android.Graphics.Color.Orange, green = Color.Green;
 
        ListView lvSimple;
 
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
 
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);
 
            // массив данных
            int[] load = { 41, 48, 22, 35, 30, 67, 51, 88 };
 
            // упаковываем данные в понятную для адаптера структуру
            IList<IDictionary<string, object>> data = new List<IDictionary<string, object>>(load.Length);
 
            JavaDictionary<string, object> m;
            for (int i = 0; i < load.Length; i++)
            {
                m = new JavaDictionary<string, object>();
                m.Add(ATTRIBUTE_NAME_TEXT, "Day " + (i + 1) + ". Load: " + load[i] + "%");
                m.Add(ATTRIBUTE_NAME_PB, load[i]);
                m.Add(ATTRIBUTE_NAME_LL, load[i]);
                data.Add(m);
            }
 
            // массив имен атрибутов, из которых будут читаться данные
            String[] from = { ATTRIBUTE_NAME_TEXT, ATTRIBUTE_NAME_PB, ATTRIBUTE_NAME_LL };
            // массив ID View-компонентов, в которые будут вставлять данные
            int[] to = { Resource.Id.tvLoad, Resource.Id.pbLoad, Resource.Id.llLoad };
 
            // создаем адаптер
            SimpleAdapter sAdapter = new SimpleAdapter(this, data, Resource.Layout.item, from, to);
            // Указываем адаптеру свой биндер
            sAdapter.ViewBinder = new MyViewBinder();
 
            // определяем список и присваиваем ему адаптер
            lvSimple = FindViewById<ListView>(Resource.Id.lvSimple);
 
            lvSimple.Adapter = sAdapter;
        }
 
        class MyViewBinder : SimpleAdapter.IViewBinder 
        {
            bool SimpleAdapter.IViewBinder.SetViewValue(View view, Java.Lang.Object data, string textRepresentation)
            {
                int i = 0;
                switch (view.Id)
                {
                    // LinearLayout
                    case Resource.Id.llLoad:
                        i = (int)data;
                        if (i < 40) view.SetBackgroundColor(green);
                        else if (i < 70) view.SetBackgroundColor(orange);
                        else view.SetBackgroundColor(red);
                        return true;
                    // ProgressBar  
                    case Resource.Id.pbLoad:
                        i = (int)data;
                        ((ProgressBar)view).Progress = i;
                        return true;
                }
                return false;
            }
 
            IntPtr IJavaObject.Handle
            {
                get { return new IntPtr(); }
            }
 
            void IDisposable.Dispose()
            {
                //throw new NotImplementedException();
            }
        }
    }
Выдает ошибку:
LocalizedMessage "android.widget.ProgressBar is not a view that can be bounds by this SimpleAdapter"

Это какие-то особенности на C# или я что-то не так делаю?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2015, 22:10
Ответы с готовыми решениями:

Переопределение методов
Здравствуйте! Помогите, пожалуйста разобраться. При вызове метода...

Переопределение подкласса
Гуру ООП, помогите! Запутался окончательно... Возможно ли вообще подобное: ...

Переопределение метода в Runtime
Создаем класс именно так BroadcastReceiver receiver = new BroadcastReceiver();...

Переопределение кнопки Home
Как переопределить кнопку HomeButton? assert getSupportActionBar()...

Переопределение методов класса DialogFragment
Добрый день. Создаю диалог AddingTaskDialogFragment, в котором есть 3...

1
Dmitrin
23 / 23 / 11
Регистрация: 04.12.2012
Сообщений: 575
21.10.2015, 21:11  [ТС] 2
Проблему пока не решил(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2015, 21:11

Переопределение onSaveInstanceState(Bundle) и отображение текста по нажатию
Наверное сложно будет понять чего я хочу, но вдруг... Через Intent из...

Переопределение в C#
Здравствуйте! Есть кнопка Button, при событии Button_Click выполняется...

переопределение
форумчане,нужна ваша помощь! в общем, проблема такая: программа написана вроде...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru