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

GridView. Изменение бекграунда по нажатию - Android

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 129
28.01.2015, 02:28     GridView. Изменение бекграунда по нажатию #1
Есть элемент GridView, который я вызываю через Spinner.
По нажатию на один из элементов GridView, его background должен меняться на другой цвет и приложение вызывает ListView с данными из базы данных. Все действия происходят в одной Activity. Верхняя половина окна - Spinner+ GridView. Нижняя половина - ListView. БД формируется через отдельный класс.
Вызов данных работает отлично, список формируется, но цвет background у нажатого элемента GridView не меняется.
Операция по смене background прописана верно. Проверял в других приложениях. Что примечательно, цвет background меняется, если закоментировать строку с формированием списка ListView из бд.

В чем может быть проблема?

Так я ставлю бекграунд грида:
Java
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/background_selected" android:state_pressed="true"/>
    <item android:drawable="@color/background_selected" android:state_selected="true"/>
    <item android:drawable="@color/background_default" />
</selector>
Java
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="background_selected">#ffffff</color>
    <color name="background_default">#ffbe3f38</color>
</resources>
Java
1
2
3
4
5
 <GridView
        android:listSelector="@color/bg_days" 
        ....
        ....>
        </GridView>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2015, 02:28     GridView. Изменение бекграунда по нажатию
Посмотрите здесь:

Image in GridView Android
GridView Android
GridView и ViewPager Android
Android GridView и обрабочик
Textview. Изменение текста по нажатию кнопки не происходит Android
Работа с GridView Android
Android Смена бекграунда на андроиде
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 129
28.01.2015, 20:07  [ТС]     GridView. Изменение бекграунда по нажатию #21
Armagedo,
test = position+1 - это что бы позиция первого элемента у спиннера равнялась 1, а не 0 я строки для спиннера задавал как массив стринговый, а там первый элемент позиция = 0. вот такая хитрая штука

Да не особо поменялся код Активити моей. В принципе все как и было, только добавил строки, исправляющие мои прошлые проблемы.

Кликните здесь для просмотра всего текста
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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
package com.example.hedd.newsqlspinnertest;
 
import android.app.Activity;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
 
 
public class MainActivity extends Activity {
 
    private ObjectsAdapter oDbHelper;
    private SimpleCursorAdapter ListAdapter;
    private SimpleCursorAdapter GridAdapter;
 
    public static int test;
    public static int test2;
 
    int checkedItemPosition = -1;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
 
        oDbHelper = new ObjectsAdapter(this);
        oDbHelper.open();
        oDbHelper.deleteAllObjects();
        oDbHelper.insertObjects();
 
        // Spinner
        ArrayAdapter<?> adapter =
                ArrayAdapter.createFromResource(this, R.array.weeksList, R.layout.spinner_item);
        adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setAdapter(adapter);
 
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
 
 
                switch (position+1){
                    case 1: test = 1;  break;
                    case 2: test = 2;  break;
                    case 3: test = 3;  break;
                    case 4: test = 4;  break;
                    default: break;
                }
 
                ListAdapter.changeCursor(null);
                ListAdapter.notifyDataSetChanged();
 
                displayDaysView();
            }
 
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
 
            }
        });
    }
 
    private void displayDaysView() {
        Cursor cursor = oDbHelper.fetchAllDays();
 
        String[] columns = new String[] {
                ObjectsAdapter.KEY_DAY,
                ObjectsAdapter.KEY_DATE
        };
 
        int[] to = new int[] {
                R.id.tvDay,
                R.id.tvDate,
        };
 
        final GridView gvDays = (GridView) findViewById(R.id.gridView1);
        GridAdapter = new SimpleCursorAdapter(
                this, R.layout.list_days_items, cursor, columns, to, 0){
 
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
 
                View view = super.getView(position, convertView, parent);
 
                TextView tvDay = (TextView) view.findViewById(R.id.tvDay);
                TextView tvDate = (TextView) view.findViewById(R.id.tvDate);
 
                if (position == checkedItemPosition) {
                    view.setBackgroundColor(Color.argb(255,190,63,56));
                    tvDay.setTextColor(Color.WHITE);
                    tvDate.setTextColor(Color.WHITE); }
                else {
                    view.setBackgroundColor(Color.TRANSPARENT);
                    tvDay.setTextColor(Color.BLACK);
                    tvDate.setTextColor(Color.GRAY); }
                return view;
            };
        };
 
        gvDays.setAdapter(GridAdapter);
 
        gvDays.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                if (checkedItemPosition != position)
                    checkedItemPosition = position;
 
                GridAdapter.notifyDataSetChanged();
 
                Cursor cursor = (Cursor) gvDays.getItemAtPosition(position);
                String objectsId = cursor.getString(cursor.getColumnIndexOrThrow("_id"));
 
                switch (objectsId) {
                    case "1": test2 = 1; break;
                    case "4": test2 = 4; break;
                    case "8": test2 = 8; break;
                    case "11": test2 = 11; break;
                    case "14": test2 = 14; break;
                    
                    default: break;
                }
 
                displayObjectsView();
            }
        });
    }
 
 
    private void displayObjectsView() {
        Cursor cursor = oDbHelper.fetchAllObjects();
 
        String[] columns = new String[] {
                ObjectsAdapter.KEY_OBJECT,
                ObjectsAdapter.KEY_TYPE,
                ObjectsAdapter.KEY_PLACE,
                ObjectsAdapter.KEY_TIMESTART,
                ObjectsAdapter.KEY_TIMEFINISH,
                ObjectsAdapter.KEY_TEACHER
        };
 
        int[] to = new int[] {
                R.id.objects_object,
                R.id.objects_type,
                R.id.objects_place,
                R.id.objects_timestart,
                R.id.objects_timefinish,
                R.id.objects_teacher,
        };
 
        ListAdapter = new SimpleCursorAdapter(
                this, R.layout.list_objects_items, cursor, columns, to, 0);
        ListView lvObjects = (ListView) findViewById(R.id.lvMain);
        lvObjects.setAdapter(ListAdapter);
 
    }
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
28.01.2015, 21:29     GridView. Изменение бекграунда по нажатию #22
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
package com.example.hedd.newsqlspinnertest;
 
import android.app.Activity;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
 
 
public class MainActivity extends Activity {
 
    private ObjectsAdapter oDbHelper;
 
    private Cursor curGridViewCursor;
    private Cursor curListViewCursor;
 
    private SimpleCursorAdapter ListAdapter;
    private SimpleCursorAdapter GridAdapter;
 
    ListView lvObjects;
    GridView gvDays;
 
    String[] listViewcolumns;
    int[] listViewToViews;
 
    String[] gridViewColumns;
    int[] gridViewToViews;
 
 
    public static int test;
    public static int test2;
 
    int checkedItemPosition = -1;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        oDbHelper = new ObjectsAdapter(this);
        oDbHelper.open();
        oDbHelper.deleteAllObjects();
        oDbHelper.insertObjects();
 
        /*****************LIST VIEW INITIALIZATION BEGIN***************/
        lvObjects = (ListView) findViewById(R.id.lvMain);
 
        curListViewCursor = null;
 
        listViewcolumns = new String[] {
                ObjectsAdapter.KEY_OBJECT,
                ObjectsAdapter.KEY_TYPE,
                ObjectsAdapter.KEY_PLACE,
                ObjectsAdapter.KEY_TIMESTART,
                ObjectsAdapter.KEY_TIMEFINISH,
                ObjectsAdapter.KEY_TEACHER
        };
 
        listViewToViews = new int[] {
                R.id.objects_object,
                R.id.objects_type,
                R.id.objects_place,
                R.id.objects_timestart,
                R.id.objects_timefinish,
                R.id.objects_teacher};
 
        ListAdapter = new SimpleCursorAdapter(
                this, R.layout.list_objects_items, curListViewCursor, listViewcolumns, listViewToViews, 0);
 
        lvObjects.setAdapter(ListAdapter);
 
        /*****************LISTVIEW INITIALIZATION END***************/
 
        /*****************GRID VIEW INITIALIZATION BEGIN***************/
 
        curGridViewCursor = null;
 
         gridViewColumns = new String[] {
                ObjectsAdapter.KEY_DAY,
                ObjectsAdapter.KEY_DATE
        };
 
        gridViewToViews = new int[] {
                R.id.tvDay,
                R.id.tvDate,
        };
 
        gvDays = (GridView) findViewById(R.id.gridView1);
 
        GridAdapter = new SimpleCursorAdapter(
                this, R.layout.list_days_items, curGridViewCursor, gridViewColumns, gridViewToViews, 0){
 
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
 
                View view = super.getView(position, convertView, parent);
 
                TextView tvDay = (TextView) view.findViewById(R.id.tvDay);
                TextView tvDate = (TextView) view.findViewById(R.id.tvDate);
 
                if (position == checkedItemPosition) {
                    view.setBackgroundColor(Color.argb(255,190,63,56));
                    tvDay.setTextColor(Color.WHITE);
                    tvDate.setTextColor(Color.WHITE); }
                else {
                    view.setBackgroundColor(Color.TRANSPARENT);
                    tvDay.setTextColor(Color.BLACK);
                    tvDate.setTextColor(Color.GRAY); }
                return view;
            };
        };
 
        gvDays.setAdapter(GridAdapter);
 
        gvDays.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                checkedItemPosition = position;
 
                GridAdapter.notifyDataSetChanged();
 
                curGridViewCursor.moveToPosition(position);
                String objectsId = curGridViewCursor.getString(cursor.getColumnIndexOrThrow("_id"));
 
                switch (objectsId) {
                    case "1": test2 = 1; break;
                    case "4": test2 = 4; break;
                    case "8": test2 = 8; break;
                    case "11": test2 = 11; break;
                    case "14": test2 = 14; break;
 
                    default: break;
                }
 
                displayObjectsView();
            }
        });
    }
        /*****************GRID VIEW INITIALIZATION END***************/
 
        // Spinner
        ArrayAdapter<?> adapter =
                ArrayAdapter.createFromResource(this, R.array.weeksList, R.layout.spinner_item);
        adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setAdapter(adapter);
 
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
 
 
                switch (position+1){
                    case 1: test = 1;  break;
                    case 2: test = 2;  break;
                    case 3: test = 3;  break;
                    case 4: test = 4;  break;
                    default: break;
                }
 
                ListAdapter.changeCursor(null);
                ListAdapter.notifyDataSetChanged();
 
                displayDaysView();
            }
 
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
 
            }
        };
 
 
    private void displayDaysView() {
        curGridViewCursor = oDbHelper.fetchAllDays();
        GridAdapter.changeCursor(curGridViewCursor);
        GridAdapter.notifyDataSetChanged();
    }
 
 
    private void displayObjectsView() {
        curListViewCursor = oDbHelper.fetchAllObjects();
        ListAdapter.changeCursor(curListViewCursor);
        ListAdapter.notifyDataSetChanged();
 
        }
 
}
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 129
29.01.2015, 11:04  [ТС]     GridView. Изменение бекграунда по нажатию #23
Armagedo, Сделал по вашему примеру, но по нажатию gridView для вывода ListView получаю ошибку.

Почему то приложение не может найти столбец object.

Java
1
2
FATAL EXCEPTION: main
    java.lang.IllegalArgumentException: column 'object' does not exist
Добавлено через 12 минут
Armagedo,
Цитата Сообщение от Hedd Посмотреть сообщение
Сделал по вашему примеру, но по нажатию gridView для вывода ListView получаю ошибку.
Почему то приложение не может найти столбец object.
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
FATAL EXCEPTION: main
* * java.lang.IllegalArgumentException: column 'object' does not exist
Эту проблему решил. Метод описал не верно.
Теперь другая проблема. При выборе в спиннере другого пункта ListView обновляется, но нажатый до этого пункт грида остается. Как его обновить? прописывать какие то свойства в getView() грида? или надо условие писать?
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
29.01.2015, 11:12     GridView. Изменение бекграунда по нажатию #24
Признак выбранности позиции остается, а нужно тоже сбросить в (-1) (т.е. в номер позиции, которая никогда не может быть выбрана )

Java
1
2
3
4
5
6
ListAdapter.changeCursor(null);
ListAdapter.notifyDataSetChanged();
 
checkedItemPosition = -1
 
displayDaysView();
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 129
29.01.2015, 11:20  [ТС]     GridView. Изменение бекграунда по нажатию #25
Armagedo, Спасибо, вышло, без вас бы я еще неделю разбирался со своим кодом

А у меня еще такой вопрос. В некоторых примерах кода ставят запятую после последнего элемента. К примеру, как здесь, после R.id.tvDate,:
Java
1
2
3
4
 gridViewToViews = new int[] {
                R.id.tvDay,
                R.id.tvDate,
        };
Если убрать запятую - ничего не меняется в работе приложения. Возможно в каких то случаях
это имеет какое-либо значение?
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
29.01.2015, 11:45     GridView. Изменение бекграунда по нажатию #26
Цитата Сообщение от Hedd Посмотреть сообщение
Armagedo, Спасибо, вышло, без вас бы я еще неделю разбирался со своим кодом
Главное понять, как происходит движение и куда надо бежать, остальное - ...

Цитата Сообщение от Hedd Посмотреть сообщение
Если убрать запятую - ничего не меняется в работе приложения. Возможно в каких то случаях
это имеет какое-либо значение?
Никакого.
A trailing comma may appear after the last expression in an array initializer and is ignored.
http://docs.oracle.com/javase/specs/....html#jls-10.6
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 129
21.02.2015, 00:45  [ТС]     GridView. Изменение бекграунда по нажатию #27
Armagedo, Возникло у меня желание убрать гавнокод Вот никак не могу додумать, как заменить свичи на нормальное обращение к БД. Возможно, вы сможете помочь? буду очень признателен.

Код MainActivity
Кликните здесь для просмотра всего текста
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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
package com.example.hedd.newsqlspinnertest;
 
import android.app.Activity;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.TextView;
 
 
public class MainActivity extends Activity {
 
    private ObjectsAdapter oDbHelper;
 
    private Cursor curGridViewCursor;
    private Cursor curListViewCursor;
 
    private SimpleCursorAdapter ListAdapter;
    private SimpleCursorAdapter GridAdapter;
 
    ListView lvObjects;
    GridView gvDays;
 
    String[] listViewColumns;
    int[] listViewToViews;
 
    String[] gridViewColumns;
    int[] gridViewToViews;
 
    public static int ChooseDays;
    public static int ChooseObjects;
 
    int checkedItemPosition = -1;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        oDbHelper = new ObjectsAdapter(this);
        oDbHelper.open();
        oDbHelper.deleteAllObjects();
        oDbHelper.insertObjects();
 
        //ListView Initialization _Begin
        lvObjects = (ListView) findViewById(R.id.lvMain);
 
        curListViewCursor = null;
 
        listViewColumns = new String[] {
                ObjectsAdapter.KEY_OBJECT,
                ObjectsAdapter.KEY_TYPE,
                ObjectsAdapter.KEY_PLACE,
                ObjectsAdapter.KEY_TIMESTART,
                ObjectsAdapter.KEY_TIMEFINISH,
                ObjectsAdapter.KEY_TEACHER
        };
 
        listViewToViews = new int[] {
                R.id.objects_object,
                R.id.objects_type,
                R.id.objects_place,
                R.id.objects_timestart,
                R.id.objects_timefinish,
                R.id.objects_teacher,
        };
 
        ListAdapter = new SimpleCursorAdapter(
                this, R.layout.list_objects_items, curListViewCursor, listViewColumns, listViewToViews, 0);
        lvObjects.setAdapter(ListAdapter);
        //ListView Initialization _End
 
        //GridView Initialization _Begin
        curGridViewCursor = null;
 
        gridViewColumns = new String[] {
                ObjectsAdapter.KEY_DAY,
                ObjectsAdapter.KEY_DATE
        };
 
        gridViewToViews = new int[] {
                R.id.tvDay,
                R.id.tvDate,
        };
 
        gvDays = (GridView) findViewById(R.id.gridView1);
 
        GridAdapter = new SimpleCursorAdapter(
                this, R.layout.list_days_items, curGridViewCursor, gridViewColumns, gridViewToViews, 0) {
 
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
 
                View view = super.getView(position, convertView, parent);
 
                TextView tvDay = (TextView) view.findViewById(R.id.tvDay);
                TextView tvDate = (TextView) view.findViewById(R.id.tvDate);
 
                if (position == checkedItemPosition) {
                    view.setBackgroundColor(Color.argb(255,190,63,56));
                    tvDay.setTextColor(Color.WHITE);
                    tvDate.setTextColor(Color.WHITE); }
                else {
                    view.setBackgroundColor(Color.TRANSPARENT);
                    tvDay.setTextColor(Color.BLACK);
                    tvDate.setTextColor(Color.GRAY); }
                return view;
            };
        };
 
        gvDays.setAdapter(GridAdapter);
 
        gvDays.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                checkedItemPosition = position;
 
                GridAdapter.notifyDataSetChanged();
 
                curGridViewCursor.moveToPosition(position);
 
                String objectsId = curGridViewCursor.getString(curGridViewCursor.getColumnIndexOrThrow("_id"));
 
                switch (objectsId) {
                    case "1": ChooseObjects = 1; break;
                    case "4": ChooseObjects = 4; break;
                    case "8": ChooseObjects = 8; break;
                    case "11": ChooseObjects = 11; break;
                    case "14": ChooseObjects = 14; break;
                    case "18": ChooseObjects = 18; break;
                    case "21": ChooseObjects = 21; break;
                    case "26": ChooseObjects = 26; break;
                    case "30": ChooseObjects = 30; break;
                    case "34": ChooseObjects = 34; break;
                    case "38": ChooseObjects = 38; break;
                    case "43": ChooseObjects = 43; break;
                    case "46": ChooseObjects = 46; break;
                    case "50": ChooseObjects = 50; break;
                    case "54": ChooseObjects = 54; break;
                    case "58": ChooseObjects = 58; break;
                    case "60": ChooseObjects = 60; break;
                    case "63": ChooseObjects = 63; break;
                    case "65": ChooseObjects = 65; break;
                    case "69": ChooseObjects = 69; break;
                    default: break;
                }
 
                displayObjectsView();
            }
        });
        //GridView Initialization _End
 
 
        // Spinner
        ArrayAdapter<?> adapter =
                ArrayAdapter.createFromResource(this, R.array.weeksList, R.layout.spinner_item);
        adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setAdapter(adapter);
 
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
 
 
                switch (position+1){
                    case 1: ChooseDays = 1;  break;
                    case 2: ChooseDays = 2;  break;
                    case 3: ChooseDays = 3;  break;
                    case 4: ChooseDays = 4;  break;
                    default: break;
                }
 
                checkedItemPosition = -1;
 
                ListAdapter.changeCursor(null);
                ListAdapter.notifyDataSetChanged();
 
                displayDaysView();
            }
 
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
 
            }
        });
    }
 
    private void displayDaysView() {
        curGridViewCursor = oDbHelper.fetchAllDays();
        GridAdapter.changeCursor(curGridViewCursor);
        GridAdapter.notifyDataSetChanged();
    }
 
    private void displayObjectsView() {
        curListViewCursor = oDbHelper.fetchAllObjects();
        ListAdapter.changeCursor(curListViewCursor);
        ListAdapter.notifyDataSetChanged();
    }
}


Код адаптера БД прилагаю постом ниже
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 129
21.02.2015, 00:46  [ТС]     GridView. Изменение бекграунда по нажатию #28
Код адаптера БД - ObjectsAdapter
Кликните здесь для просмотра всего текста
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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
package com.example.hedd.newsqlspinnertest;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
public class ObjectsAdapter {
 
    private MainActivity oa;
 
    public static final String KEY_ROWID = "_id";
    public static final String KEY_DAY = "day";
    public static final String KEY_DATE = "date";
    public static final String KEY_OBJECT = "object";
    public static final String KEY_TYPE = "type";
    public static final String KEY_PLACE = "place";
    public static final String KEY_TIMESTART = "timestart";
    public static final String KEY_TIMEFINISH = "timefinish";
    public static final String KEY_TEACHER = "teacher";
 
    private DatabaseObjectsHelper moDbHelper;
    private SQLiteDatabase moDb;
 
    private static final String DATABASE_NAME = "Shedule_DB";
    private static final String SQLITE_TABLE = "DaysObjects";
    private static final int DATABASE_VERSION = 1;
 
    private final Context moCtx;
 
    private static final String DATABASE_CREATE = "" +
            "CREATE TABLE if not exists " + SQLITE_TABLE + " ("
            + KEY_ROWID + " integer PRIMARY KEY autoincrement," +
            KEY_DAY + "," +
            KEY_DATE + "," +
            KEY_OBJECT + "," +
            KEY_TYPE + "," +
            KEY_PLACE + "," +
            KEY_TIMESTART + "," +
            KEY_TIMEFINISH + "," +
            KEY_TEACHER + ");";
 
    private static class DatabaseObjectsHelper extends SQLiteOpenHelper {
        DatabaseObjectsHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(DATABASE_CREATE);
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + SQLITE_TABLE);
            onCreate(db);
        }
    }
 
    public ObjectsAdapter (Context ctx) {
        this.moCtx = ctx;
    }
 
    public ObjectsAdapter open() throws SQLException {
        moDbHelper = new DatabaseObjectsHelper(moCtx);
        moDb = moDbHelper.getWritableDatabase();
        return this;
    }
 
    public void close() {
        if (moDbHelper != null) {
            moDbHelper.close();
        }
    }
 
    public long createItemObjects(String day, String date, String object, String type, String place,
                                  String timestart, String timefinish, String teacher) {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_DAY, day);
        initialValues.put(KEY_DATE, date);
        initialValues.put(KEY_OBJECT, object);
        initialValues.put(KEY_TYPE, type);
        initialValues.put(KEY_PLACE, place);
        initialValues.put(KEY_TIMESTART, timestart);
        initialValues.put(KEY_TIMEFINISH, timefinish);
        initialValues.put(KEY_TEACHER, teacher);
 
        return moDb.insert(SQLITE_TABLE, null, initialValues);
    }
 
    public void deleteAllObjects() {
        SQLiteDatabase del = moDbHelper.getWritableDatabase();
        del.delete(SQLITE_TABLE, null, null);
        moDb.execSQL("DELETE FROM sqlite_sequence WHERE name = 'DaysObjects'");
    }
 
    public Cursor fetchAllObjects() {
        String selection = "";
        switch (oa.ChooseObjects) {
            case 1: selection = KEY_DATE + " = '12.01'"; break;
            case 4: selection = KEY_DATE + " = '13.01'"; break;
            case 8: selection = KEY_DATE + " = '14.01'";break;
            case 11: selection = KEY_DATE + " = '15.01'";break;
            case 14: selection = KEY_DATE + " = '16.01'";break;
            case 18: selection = KEY_DATE + " = '19.01'";break;
            case 21: selection = KEY_DATE + " = '20.01'";break;
            case 26: selection = KEY_DATE + " = '21.01'";break;
            case 30: selection = KEY_DATE + " = '22.01'";break;
            case 34: selection = KEY_DATE + " = '23.01'";break;
            case 38: selection = KEY_DATE + " = '26.01'";break;
            case 43: selection = KEY_DATE + " = '27.01'";break;
            case 46: selection = KEY_DATE + " = '28.01'";break;
            case 50: selection = KEY_DATE + " = '29.01'";break;
            case 54: selection = KEY_DATE + " = '30.01'";break;
            case 58: selection = KEY_DATE + " = '31.01'";break;
            case 60: selection = KEY_DATE + " = '02.02'";break;
            case 63: selection = KEY_DATE + " = '03.02'";break;
            case 65: selection = KEY_DATE + " = '04.02'";break;
            case 69: selection = KEY_DATE + " = '05.02'";break;
 
            default: break;
        }
        Cursor moCursor = moDb.query(SQLITE_TABLE, new String[] {KEY_ROWID,
                        KEY_DATE, KEY_OBJECT, KEY_TYPE, KEY_PLACE, KEY_TIMESTART,
                        KEY_TIMEFINISH, KEY_TEACHER},
                selection , null, null, null, null);
 
        if (moCursor != null) {
            moCursor.moveToFirst();
        }
        return moCursor;
    }
 
    public Cursor fetchAllDays() {
        String selection = "";
        switch (oa.ChooseDays) {
            case 1: selection = KEY_ROWID + " IN (1,4,8,11,14)"; break;
            case 2: selection = KEY_ROWID + " IN (18,21,26,30,34)"; break;
            case 3: selection = KEY_ROWID + " IN (38,43,46,50,54,58)";break;
            case 4: selection = KEY_ROWID + " IN (60,63,65,69)";break;
            default: break;
        }
        Cursor moCursor = moDb.query(SQLITE_TABLE, new String[] {KEY_ROWID, KEY_DAY, KEY_DATE},
                selection , null, null, null, null);
 
        if (moCursor != null) {
            moCursor.moveToFirst();
        }
        return moCursor;
    }
 
 
 
    public void insertObjects() {
        createItemObjects("Понедельник", "12.01", "Русский язык\n и культура речи", "Лекция", "акт.зал", "8:00", "9:30", "Матиив Н.Д.\n к.ф.н., доцент");
        createItemObjects("Понедельник", "12.01", "\nТипографика", "Лекция", "ауд.27", "9:40", "11:10", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Понедельник", "12.01", "\nТипографика", "Практика", "ауд.27", "11:20", "12:50", "Алексеева Е.Н.\n преподаватель");
 
        createItemObjects("Вторник", "13.01", "\nЦветоведение", "Лекция", "ауд.39", "9:40", "11:10", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Вторник", "13.01", "\nЦветоведение", "Лекция", "ауд.39", "11:20", "12:50", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Вторник", "13.01", "Теория\n и практика дизайна", "Лекция", "ауд.37", "13:00", "14:30", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Вторник", "13.01", "\nОсновы права", "Лекция", "ауд.7", "14:40", "16:10", "Черкасова А.В.\n преподаватель");
 
        createItemObjects("Среда", "14.01", "Теория\n и практика дизайна", "Лекция", "ауд.39", "8:00", "9:30", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Среда", "14.01", "\nПроектирование", "Лекция", "ауд.39", "9:40", "11:10", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Среда", "14.01", "\nПроектирование", "Практика", "ауд.39", "11:20", "12:50", "Савченко Г.Ф.\n преподаватель");
 
        createItemObjects("Четверг", "15.01", "Теория\n и практика дизайна", "Практика", "ауд.39", "9:40", "11:10", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Четверг", "15.01", "\nПроектирование", "Практика", "ауд.39", "11:20", "12:50", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Четверг", "15.01", "\nПроектирование", "Практика", "ауд.39", "13:00", "14:30", "Савченко Г.Ф.\n преподаватель");
 
        createItemObjects("Пятница", "16.01", "Русский язык\n и культура речи", "Лекция", "акт.зал", "8:00", "9:30", "Матиив Н.Д.\n к.ф.н., доцент");
        createItemObjects("Пятница", "16.01", "Академический\n рисунок", "Лекция", "ауд.40", "9:40", "11:10", "Марманов Р.П.\n преподаватель");
        createItemObjects("Пятница", "16.01", "Академический\n рисунок", "Практика", "ауд.40", "11:20", "12:50", "Марманов Р.П.\n преподаватель");
        createItemObjects("Пятница", "16.01", "\nОсновы права", "Лекция", "акт.зал", "13:00", "14:30", "Черкасова А.В.\n преподаватель");
 
        createItemObjects("Понедельник", "19.01", "\nТипографика", "Практика", "ауд.39", "8:00", "9:30", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Понедельник", "19.01", "\nТипографика", "Практика", "ауд.39", "9:40", "11:10", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Понедельник", "19.01", "\nСоциология", "Лекция", "акт.зал", "11:20", "12:50", "Швецова А.В.\n д.ф.н., профессор");
 
        createItemObjects("Вторник", "20.01", "Основы\n произв. мастерства", "Лекция", "ауд.39", "8:00", "9:30", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Вторник", "20.01", "Основы\n произв. мастерства", "Лекция", "ауд.39", "9:40", "11:10", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Вторник", "20.01", "Академический\n рисунок", "Лекция", "ауд.37", "11:20", "12:50", "Кармазина Н.В.\n преподаватель");
        createItemObjects("Вторник", "20.01", "\nОсновы права", "Лекция", "акт.зал", "13:00", "14:30", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Вторник", "20.01", "\nОсновы права", "Практика", "м.к.23", "14:40", "16:10", "Черкасова А.В.\n преподаватель");
 
        createItemObjects("Среда", "21.01", "\nСоциология", "Лекция", "акт.зал", "8:00", "9:30", "Швецова А.В.\n д.ф.н., профессор");
        createItemObjects("Среда", "21.01", "Теория\n и практика дизайна", "ауд.13", "ауд.40", "9:40", "11:10", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Среда", "21.01", "\nПроектирование", "Практика", "м.к.23", "11:20", "12:50", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Среда", "21.01", "\nПроектирование", "Практика", "м.к.23", "13:00", "14:30", "Савченко Г.Ф.\n преподаватель");
 
        createItemObjects("Четверг", "22.01", "\nИстория", "Лекция", "акт.зал", "8:00", "9:30", "Кармазина Н.В.\n к.и.н., доцент");
        createItemObjects("Четверг", "22.01", "Выполнение проекта\n в материале", "Лекция", "ауд.39", "9:40", "11:10", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Четверг", "22.01", "Теория\n и практика дизайна", "Практика", "ауд.39", "11:20", "12:50", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Четверг", "22.01", "Теория\n и практика дизайна", "ЭКЗАМЕН", "ауд.39", "13:00", "14:30", "Савченко Г.Ф.\n преподаватель");
 
        createItemObjects("Пятница", "23.01", "Академическая\n живопись", "Лекция", "ауд.40", "8:00", "9:30", "Марманов Р.П.\n преподаватель");
        createItemObjects("Пятница", "23.01", "Академический\n рисунок", "Практика", "ауд.40", "9:40", "11:10", "Марманов Р.П.\n преподаватель");
        createItemObjects("Пятница", "23.01", "Академический\n рисунок", "Практика", "ауд.40", "11:20", "12:50", "Марманов Р.П.\n преподаватель");
        createItemObjects("Пятница", "23.01", "Русский язык\n и культура речи", "Практика", "ауд.38", "13:00", "14:30", "Матиив Н.Д.\n к.ф.н., доцент");
 
        createItemObjects("Понедельник", "26.01", "Основы произв.\n мастерства", "Лекция", "ауд.39", "8:00", "9:30", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Понедельник", "26.01", "\nЦветоведение", "Лекция", "ауд.39", "9:40", "11:10", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Понедельник", "26.01", "\nТипографика", "ЗАЧЕТ", "ауд.39", "11:20", "12:50", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Понедельник", "26.01", "\nИстория", "Лекция", "ауд.7", "13:00", "14:30", "Кармазина Н.В.\n к.и.н., доцент");
        createItemObjects("Понедельник", "26.01", "\nСоциология", "Лекция", "ауд.27", "14:40", "16:10", "Швецова А.В.\n д.ф.н., профессор");
 
        createItemObjects("Вторник", "27.01", "Основы произв.\n мастерства", "Лекция", "ауд.39", "8:00", "9:30", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Вторник", "27.01", "Основы произв.\n мастерства", "Лекция", "ауд.39", "9:40", "11:10", "Алексеева Е.Н.\n преподаватель");
        createItemObjects("Вторник", "27.01", "\nОсновы права", "Практика", "ауд.22", "11:20", "12:50", "Черкасова А.В.\n преподаватель");
 
        createItemObjects("Среда", "28.01", "\nИстория", "Лекция", "ауд.5", "9:40", "11:10", "Кармазина Н.В.\n к.и.н., доцент");
        createItemObjects("Среда", "28.01", "\nПропедевтика", "Лекция", "ауд.39", "11:20", "12:50", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Среда", "28.01", "\nПропедевтика", "Лекция", "ауд.39", "13:00", "14:30", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Среда", "28.01", "Русский язык\n и культура речи", "Практика", "лекц.зал", "14:40", "16:10", "Матиив Н.Д.\n к.ф.н., доцент");
 
        createItemObjects("Четверг", "29.01", "Выполнение проекта\n в материале", "Практика", "ауд.39", "9:40", "11:10", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Четверг", "29.01", "\nПропедевтика", "Практика", "ауд.39", "11:20", "12:50", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Четверг", "29.01", "\nПропедевтика", "Практика", "ауд.39", "13:00", "14:30", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Четверг", "29.01", "\nСоциология", "Практика", "лекц.зал", "14:40", "16:10", "Швецова А.В., д.ф.н.\n профессор");
 
        createItemObjects("Пятница", "30.01", "Русский язык\n и культура речи", "ЭКЗАМЕН", "лекц.зал", "8:00", "9:30", "Матиив Н.Д.\n к.ф.н., доцент");
        createItemObjects("Пятница", "30.01", "Академический\n рисунок", "Практика", "ауд.40", "9:40", "11:10", "Марманов Р.П.\n преподаватель");
        createItemObjects("Пятница", "30.01", "Академическая\n живопись", "Практика", "ауд.40", "11:20", "12:50", "Марманов Р.П.\n преподаватель");
        createItemObjects("Пятница", "30.01", "Академическая\n живопись", "Практика", "ауд.40", "13:00", "14:30", "Марманов Р.П.\n преподаватель");
 
        createItemObjects("Суббота", "31.01", "Академическая\n живопись", "Практика", "ауд.40", "9:40", "11:10", "Марманов Р.П.\n преподаватель");
        createItemObjects("Суббота", "31.01", "Академическая\n живопись", "Практика", "ауд.40", "11:20", "12:50", "Марманов Р.П.\n преподаватель");
 
        createItemObjects("Понедельник", "02.02", "Проектная\n графика", "Лекция", "ауд.20", "8:00", "9:30", "Савченко Г.Ф.\n преподаватель");
        createItemObjects("Понедельник", "02.02", "\nЦветоведение", "Практика", "ауд.39", "9:40", "11:10", "Алексеева Е.Н.\n преподаватель");
 
 
 
    }
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2015, 12:22     GridView. Изменение бекграунда по нажатию
Еще ссылки по теме:

Смена бекграунда на андроиде Android
Android GridView в фокусе
Не заполняется gridview Android
Android Обновление gridView
Android Разметка GridView

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

Или воспользуйтесь поиском по форуму:
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
21.02.2015, 12:22     GridView. Изменение бекграунда по нажатию #29
Цитата Сообщение от Hedd Посмотреть сообщение
как заменить свичи на нормальное обращение к БД
Ну, для начала нужно понять почему именно эти значения ты контролируешь.
Почему отслеживаешь значения ключа именно 1, 4, 8 и т.д.
А что, если 2 или 5 или...?

А зачем ты в класс ObjectsAdapter втянул экземпляр MainActivity oa?
Чё-т я не вижу, где она инициализируется...

Да и зачем она там?
Ты из MainActivity делаешь вызовы oDbHelper.fetchAllDays() и oDbHelper.fetchAllObjects(), а потом в них же идёшь за значениями переменной в классе MainActivity.
Чё сразу не переписать и делать вызов этих методв с соостествующим параметром

oDbHelper.fetchAllDays(int _ChooseDays)
oDbHelper.fetchAllObjects(int _ChooseObjects)

?
Yandex
Объявления
21.02.2015, 12:22     GridView. Изменение бекграунда по нажатию
Ответ Создать тему
Опции темы

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