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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Internet (ошибка доступа) приложение не заходит в интернет http://www.cyberforum.ru/android-dev/thread1363462.html
Написал приложение, на эмуляторе все прекрасно работает, заходит в интернет и скачивает нужную информации. Только установил приложение на телефон выдает ошибку и закрывает приложение (на телефоне...
Программирование Android Notification (постоянно висящий, с кнопками) Нужно вместе с сервисом включать Notification, который будет висеть и выполнять что-то, когда на него нажмут. На уведомлении будет 3 кнопки, одна из которых должна закрывать уведомление и выключать... http://www.cyberforum.ru/android-dev/thread1363358.html
Как вывести в BaseAdapter картинки, занесенные в таблицу? Программирование Android
Всем привет! Подскажите пожалуйста, как вывести в BaseAdapter картинки которые я занес в таблицу @Override public View getView(int position, View convertView, ViewGroup parent) { ...
Программирование Android Как подключить библиотеку libxml к проекту?
Здравствуйте! Есть игра на iOs, чтобы игра пошла на Android, нужно подключить библиотеку libxml к проекту, библитека в исходниках (заголовочные и исполняемые файлы) то есть не фрейм ворки). ...
Программирование Android Как подключить библиотеку libxml к проекту? http://www.cyberforum.ru/android-dev/thread1363285.html
Здравствуйте! Есть игра на iOs, чтобы игра пошла на Android, нужно подключить библиотеку libxml к проекту, библитека в исходниках (заголовочные и исполняемые файлы) то есть не фрейм ворки). ...
Программирование Android Запустил парсер, но он читает лишь заголовок, что добавить чтобы можно парсить весь сайт? import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.widget.TextView; import org.jsoup.Jsoup; import... подробнее

Показать сообщение отдельно
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
28.01.2015, 15:10  [ТС]
Armagedo, Теперь столкнулся с другой проблемой, при попытке добавить функционал getView() в свой проект, описанный в первом посте.

Вставил код верно, проект компилируется, приложение запускается, но при нажатии на элемент GridView фон устанавливается только у любого первого нажатого элемента. При нажатии на другой элемент, фон остается на первом нажатом, а на новом нажатом элементе не меняется.
Если в спиннере выбрать другой пункт - GridView обновляется и можно выбрать другой элемент, опять же единожды.

Структура у моего приложения такова:
Spinner, в котором 4 пункта. По нажатию на каждый пункт отображается разный GridView с данными из БД.
GridView - состоит из 5 элементов, по нажатию на каждый пункт, отображается разный ListView с данными из БД.

Вот я и не могу понять почему смена фона срабатывает единожды, пока я не обновлю данные..

Вот код моей Activity:
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
public class MainActivity extends Activity {
    
 //доступ к классу БД
    private ObjectsAdapter oDbHelper;
 
    private SimpleCursorAdapter oDataAdapter;
 
    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) {
 
  //По нажатию на пункт спиннера выбирается соотв. GridView из БД.
  //где test - переменная для класса с БД для выбора данных 
                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;
                }
                
 // отображаем выбранные элементы GridView (описано ниже)
                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,
        };
 
 // Адаптер для GridView
        final GridView gvDays = (GridView) findViewById(R.id.gridView1);
        oDataAdapter = 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.YELLOW);
                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(oDataAdapter);
 
        gvDays.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                if (checkedItemPosition != position)
                    checkedItemPosition = position;
                else checkedItemPosition = -1;
 
                oDataAdapter.notifyDataSetChanged();
 
// по нажатию на элемент GridView получаем id нажатого элемента из БД.
//где test2 - переменная из класса БД для выборки данных.
                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;
                }
 //заполняем ListView соответств. данными из БД
                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,
        };
 
        oDataAdapter = new SimpleCursorAdapter(
                this, R.layout.list_objects_items, cursor, columns, to, 0);
 
        final ListView lvObjects = (ListView) findViewById(R.id.lvMain);
        lvObjects.setAdapter(oDataAdapter);
    }
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru