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

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

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

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

18.10.2015, 22:10. Просмотров 169. Ответов 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# (Программирование Android):

Переопределение методов - Программирование Android
Здравствуйте! Помогите, пожалуйста разобраться. При вызове метода B.aa(&quot;Тест&quot;), я получаю вывод в логах из методов B.aa(String x) и...

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

Переопределение метода в Runtime - Программирование Android
Создаем класс именно так BroadcastReceiver receiver = new BroadcastReceiver(); Дальше, надо в receiver переопределить onReceive....

Переопределение кнопки Home - Программирование Android
Как переопределить кнопку HomeButton? assert getSupportActionBar() != null; action_bar = getSupportActionBar(); ...

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

Переопределение - PHP ООП
Извините может не туда.. Срочно нужно научится ООП... решил сделать самое простое подключится к базе данных.. &lt;?php ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Dmitrin
21 / 21 / 3
Регистрация: 04.12.2012
Сообщений: 531
21.10.2015, 21:11  [ТС] #2
Проблему пока не решил(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2015, 21:11
Привет! Вот еще темы с ответами:

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

переопределение - C++
Необходимо реализовать класс Stack, соответствующий стеку чисел. Для хранения стека внутри класса используется массив. Размер массива...

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

Переопределение оператора - Free Pascal
Подскажите, где и как во FreePascal описывается переопределение оператора (operator)?


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

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

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