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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
#1

Создание контрола (Spinner) - Программирование Android

14.02.2013, 19:22. Просмотров 1761. Ответов 9
Метки нет (Все метки)

Необходимо создать совой аналог spinnera, для возможности задания цвета текста
За основу взял вот это
http://stackoverflow.com/questions/9...ner-text-color
my_spinner_style.xml
XML
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<textVeiw xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:singleLine="true"
    android:textColor="#ffffff" />
MySpinnerVeiw
Java
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
package com.example.gps_marker;
 
import android.content.Context;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
 
 
public class MySpinnerVeiw extends Spinner {
 
    String[] data  ;
    Spinner spinner;
    public MySpinnerVeiw(Context context, AttributeSet attrs) {
        super(context, attrs);
        //spinner = (Spinner) findViewById(context.get);
        // TODO Auto-generated constructor stub
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            getContext(), R.layout.my_spinner_style,data) {
 
        public View getView(int position, View convertView,
                ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
 
            ((TextView) v).setTextSize(16);
            ((TextView) v).setTextColor(
                    getResources()
                    .getColorStateList(R.color.white));
            spinner.setAdapter(adapter);
            invalidate();
            return v;
        }
 
        public View getDropDownView(int position, View convertView,
                ViewGroup parent) {
            View v = super.getDropDownView(position, convertView,
                    parent);
            v.setBackgroundResource(R.drawable.car);
 
            ((TextView) v).setTextColor(getResources().getColorStateList(
                            R.color.blue));
         //   ((TextView) v).setTypeface(fontStyle);
 
            invalidate();
            return v;
        }
        public void init()
        { invalidate();}
    };
    
}
при размещении элемента на layout возникает ошибка

Кликните здесь для просмотра всего текста
java.lang.NullPointerException
at java.util.Arrays$ArrayList.<init>(Unknown Source)
at java.util.Arrays.asList(Unknown Source)
at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:128)
at com.example.gps_marker.MySpinnerVeiw$1.<init>(MySpinnerVeiw.java:22)
at com.example.gps_marker.MySpinnerVeiw.<init>(MySpinnerVeiw.java:23)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:413)
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:170)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:135)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:746)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:718)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:749)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:718)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:749)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:718)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:372)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:385)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:440)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1545)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1302)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.onXmlModelChanged(GraphicalEditorPart.java:1260)
at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateXmlModelChanged(LayoutEditorDelegate.java:399)
at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.xmlModelChanged(CommonXmlEditor.java:329)
at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor$XmlModelStateListener.modelChanged(AndroidXmlEditor.java:1636)
at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.wrapEditXmlModel(AndroidXmlEditor.java:1097)
at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.wrapUndoEditXmlModel(AndroidXmlEditor.java:1173)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.MoveGesture.drop(MoveGesture.java:396)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GestureManager$CanvasDropListener.drop(GestureManager.java:679)
at org.eclipse.swt.dnd.DNDListener.handleEvent(DNDListener.java:90)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:774)
at org.eclipse.swt.dnd.DropTarget.Drop(DropTarget.java:456)
at org.eclipse.swt.dnd.DropTarget.Drop_64(DropTarget.java:392)
at org.eclipse.swt.dnd.DropTarget$3.method6(DropTarget.java:260)
at org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:119)
at org.eclipse.swt.internal.ole.win32.COM.DoDragDrop(Native Method)
at org.eclipse.swt.dnd.DragSource.drag(DragSource.java:363)
at org.eclipse.swt.dnd.DragSource.access$0(DragSource.java:289)
at org.eclipse.swt.dnd.DragSource$1.handleEvent(DragSource.java:172)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1029)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:923)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2013, 19:22     Создание контрола (Spinner)
Посмотрите здесь:

Создание контрола на верхней панели, как - Программирование Android
Всем здравствуйте.Недавно начал знакомство с андроидом.Буду краток.Интересует следующее: - как сделать такую кнопку на верхней...

Java spinner - Программирование Android
Спиннер(выпадающий список) у меня отображает массив из раздела strings.xml. Вопрос: как сделать так, чтобы при выборе элемента спиннера...

быстрый Spinner - Программирование Android
Подскажите пожалуйста как реализовать. Имеется два спинера, сначала выбирается один, затем другой, нажимается кнопка &quot;сравнить&quot; и в...

spinner в ListView - Программирование Android
в каждой строке ListView есть текст и спинер указывающий какое то значение. два дня сижу не могу заставить чтоб каждый елемент листа...

Spinner элементы - Программирование Android
Доброго времени суток) Есть Spinner список , нужно из этого списка выбрать элемент(текст) ,чтобы потом нажать на кнопку и в другом...

Spinner и NavigationDrawer - Программирование Android
Доброго времени суток! Ситуевина следующая - надо реализовать спинер в экшнбаре + NavigationDrawer .. перерыл все что можно, но всегда...

Список из Spinner - Программирование Android
Здравствуйте. Умею работать с Spinner, умею просто с ListView, но умею это делать по отдельность. Пробовал найти что то похожее, нашел...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.02.2013, 19:44     Создание контрола (Spinner) #2
Цитата Сообщение от nikooolay Посмотреть сообщение
MySpinnerVeiw. java:22
Цитата Сообщение от nikooolay Посмотреть сообщение
NullPointerException
...
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
14.02.2013, 21:30  [ТС]     Создание контрола (Spinner) #3
Исправил раньше чем прочитал ваш пост, но все равно спасибо.
вся проблема оказалась в пустой data
Java
1
String[] data ={"122", "255"} ;
однако главный вопрос с цветом так и не решился.
Тест по в списке по прежнему черный.

Цвет текста в приложении задается темой, возможно ли что данная тема изменяет явно заданные цвета?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.02.2013, 21:51     Создание контрола (Spinner) #4
я не понимаю как оно вообще у вас работает....

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

Добавлено через 1 минуту
и сетается он в spinner который null
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
15.02.2013, 01:43  [ТС]     Создание контрола (Spinner) #5
Если я правильно понял ваше замечание
то следует написать вот так
Java
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
public class MySpinnerVeiw extends Spinner {
 
    String[] data ={"122", "255"} ;
    Spinner spinner;
    
    public MySpinnerVeiw(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
        //spinner = (Spinner) findViewById(context.get);
        // TODO Auto-generated constructor stub
    }
    ArrayAdapter<String>  adapter1 = new ArrayAdapter<String>(
            getContext(), R.layout.my_spinner_style,data) {
 
        public View getView(int position, View convertView,
                ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
 
            ((TextView) v).setTextSize(16);
            ((TextView) v).setTextColor(
                    getResources()
                    .getColorStateList(R.color.green));
           
            invalidate();
            return v;
        }
 
        public View getDropDownView(int position, View convertView,
                ViewGroup parent) {
            View v = super.getDropDownView(position, convertView,
                    parent);
            v.setBackgroundResource(R.drawable.car);
 
            ((TextView) v).setTextColor(getResources().getColorStateList(
                            R.color.blue));
         //   ((TextView) v).setTypeface(fontStyle);
            invalidate();
            return v;
        }
        
       
    };
    public void init()
    { 
         spinner.setAdapter(adapter1);
         }
    
}
и получаю вот такую ошибку
Кликните здесь для просмотра всего текста
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gps_marker/com.example.gps_marker.MenuActivity}: android.view.InflateException: Binary XML file line #57: Error inflating class com.example.gps_marker.MySpinnerVeiw
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
at android.app.ActivityThread.access$1500(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3835)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #57: Error inflating class com.example.gps_marker.MySpinnerVeiw
at android.view.LayoutInflater.createView(LayoutInflater.java:518)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:213)
at android.app.Activity.setContentView(Activity.java:1657)
at com.example.gps_marker.MenuActivity.onCreate(MenuActivity.java:43)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
... 11 more
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
at android.view.LayoutInflater.createView(LayoutInflater.java:505)
... 23 more
Caused by: java.lang.NullPointerException
at com.example.gps_marker.MySpinnerVeiw.init(MySpinnerVeiw.java:57)
at com.example.gps_marker.MySpinnerVeiw.<init>(MySpinnerVeiw.java:20)
... 26 more
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.02.2013, 02:10     Создание контрола (Spinner) #6
Цитата Сообщение от nikooolay Посмотреть сообщение
Spinner spinner;
это зачем вообще нужно?
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
15.02.2013, 02:35  [ТС]     Создание контрола (Spinner) #7
Тогда приложение завершается с такой ошибкой
Java
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
 FATAL EXCEPTION: main
 android.view.InflateException: Binary XML file line #2: Error inflating class textVeiw
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:386)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:332)
    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
    at com.example.gps_marker.MySpinnerVeiw$1.getView(MySpinnerVeiw.java:29)
    at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:192)
    at android.view.View.measure(View.java:8335)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
    at android.view.View.measure(View.java:8335)
    at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1082)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
    at android.widget.ScrollView.onMeasure(ScrollView.java:296)
    at android.view.View.measure(View.java:8335)
    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:581)
    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:365)
    at android.view.View.measure(View.java:8335)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
    at android.view.View.measure(View.java:8335)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
    at android.view.View.measure(View.java:8335)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
    at android.view.View.measure(View.java:8335)
    at android.view.ViewRoot.performTraversals(ViewRoot.java:843)
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1892)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3835)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.ClassNotFoundException: android.view.textVeiw in loader dalvik.system.PathClassLoader[/mnt/asec/com.example.gps_marker-1/pkg.apk]
    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at android.view.LayoutInflater.createView(LayoutInflater.java:471)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
    ... 38 more
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.02.2013, 02:37     Создание контрола (Spinner) #8
нет такого класса "textVeiw", есть "TextVeiw"
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
15.02.2013, 19:27  [ТС]     Создание контрола (Spinner) #9
Результат работы следующий
Через атрибуты получаем id массив
присваиваем его содержимое к data. Судя по логам содержимое присваивается успешно,
однако для функция getDropDownView(int position, View convertView, ViewGroup parent) продолжает работать с первичным значением data.
Однако если в функцию дописать
((TextView) v).setText(data[0]);
значение выведется столько раз, сколько элементов было в data при первом объявлении.
Правильно ли я считаю что данная проблема вызвана тем что сначала создается объект, а уже затем я получаю атрибуты?

Java
1
2
3
4
5
6
7
8
9
10
public MySpinnerVeiw(Context context, AttributeSet attrs) {
        super(context, attrs);
        try {
            i = Integer.valueOf(attrs.getAttributeValue(0).substring(1,
                    attrs.getAttributeValue(0).length()));
            data = res.getStringArray(i);
        } catch (Exception e) {
            Log.d("my", "Error");
            // TODO: handle exception
        }
однако при попытке написать что либо перед super(context, attrs);
получаю Description Resource Path Location Type
Implicit super constructor Spinner() is undefined. Must explicitly invoke another constructor

Java
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
package com.example.gps_marker;
 
import android.content.Context;
import android.content.res.Resources;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
 
public class MySpinnerVeiw extends Spinner {
 
    String[] data = { "123" };
    int i = 0;
    Resources res = getResources();
    public MySpinnerVeiw(Context context, AttributeSet attrs) {
        
        super(context, attrs);
        try {
            i = Integer.valueOf(attrs.getAttributeValue(0).substring(1,
                    attrs.getAttributeValue(0).length()));
            data = res.getStringArray(i);
        } catch (Exception e) {
            Log.d("my", "Error");
            // TODO: handle exception
        }
        init();
    }
 
    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(getContext(),
            R.layout.my_spinner_style, data) {
// Выбранный элемент
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            ((TextView) v).setText(data[0]);
            ((TextView) v).setTextColor(getResources().getColorStateList(
                    R.color.green));
            return v;
        }
// Раскрытый список 
        public View getDropDownView(int position, View convertView,
                ViewGroup parent) {
            View v = super.getDropDownView(position, convertView, parent);
            ((TextView) v).setTextColor(getResources().getColorStateList(
                    R.color.blue));
            return v;
        }
 
    };
 
    public void init() {
        setAdapter(adapter1);
        invalidate();
    }
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2013, 20:31     Создание контрола (Spinner)
Еще ссылки по теме:

элемент spinner - Программирование Android
Подскажите, пожалуйста, как поставить текст элементов по центру? Код: android:gravity=&quot;center&quot; не работает.

Наполнение Spinner из БД - Программирование Android
Подскажите, как наполнить Spinner из БД? В данный момент названия из БД выводятся с помощью отдельного layout и TextView //...

проблема со Spinner'ом - Программирование Android
Добрый день подскажите где может быть ошибка ... import java.util.ArrayList; import java.util.List; import...

Данные из json в spinner - Программирование Android
Здравствуйте! В общем получаю к примеру json Нужно запихать это в spinner и чтобы при выборе элемента определить id. Id в json...

Сохранение позиции spinner - Программирование Android
На фрагменте есть несколько спиннеров. При переходе на другой фрагмент, а потом вернутся на фрагмент со спиннерами все сбрасывается на...


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

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.02.2013, 20:31     Создание контрола (Spinner) #10
ниче не понял.

Добавлено через 8 минут
Java
1
2
3
4
5
 ((TextView) v).setText(data[position]);
....
public int getCount (){
return data.length();
}
Добавлено через 1 минуту
а лучше так

Java
1
2
3
4
5
6
7
8
try {
            i = Integer.valueOf(attrs.getAttributeValue(0).substring(1,
                    attrs.getAttributeValue(0).length()));
            data = res.getStringArray(i);
            adapter1 = new ArrayAdapter<String>(getContext(),
            R.layout.my_spinner_style, data) {...};
 
        }
Yandex
Объявления
15.02.2013, 20:31     Создание контрола (Spinner)
Ответ Создать тему
Опции темы

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