Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Dmitrin
21 / 21 / 3
Регистрация: 04.12.2012
Сообщений: 527
#1

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

18.10.2015, 22:10. Просмотров 155. Ответов 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# или я что-то не так делаю?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2015, 22:10     Переопределение ViewBinder на C#
Посмотрите здесь:

C# Переопределение в C#
Переопределение класса PHP ООП
C++ переопределение
переопределение C#
Переопределение init
PHP ООП Переопределение
Android Переопределение метода в Runtime
Переопределение onSaveInstanceState(Bundle) и отображение текста по нажатию Android
Android Переопределение подкласса
Переопределение оператора ++ C++
Переопределение методов Android
Переопределение кнопки Home Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dmitrin
21 / 21 / 3
Регистрация: 04.12.2012
Сообщений: 527
21.10.2015, 21:11  [ТС]     Переопределение ViewBinder на C# #2
Проблему пока не решил(
Yandex
Объявления
21.10.2015, 21:11     Переопределение ViewBinder на C#
Ответ Создать тему
Опции темы

Текущее время: 07:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru