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

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

Войти
Регистрация
Восстановить пароль
 
Alex_Fedor
29 / 29 / 4
Регистрация: 20.01.2015
Сообщений: 219
#1

Обновление Базы данных - Программирование Android

28.02.2015, 13:23. Просмотров 375. Ответов 6
Метки нет (Все метки)

Есть база данных которую просматриваю в Активити1, сделал все работает.
При нажатии на кнопку перехожу в Ативити2 где вижу последнюю просматриваемую запись, сделал все работает.
В Активити2 можно редактировать запись, сделал вроде работает.
При выходе из Активити2, нужно как то то перезагрузить базу данных в Активити1, что бы увидеть отредактированную запись, не знаю как сделать, поможите плз.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2015, 13:23     Обновление Базы данных
Посмотрите здесь:

SQLite обновление базы данных - Программирование Android
Всем привет. Использую базу данных в приложении. При обновлении программы нужно обновить базу данных в том числе, база данных хранится...

Обновление базы данных вручную - Программирование Android
Бьюсь я над проблемой изменения значений в БД ( http://www.cyberforum.ru/android-dev/thread1805861.html ). Решил посмотреть что именно...

Обновление данных - Программирование Android
Добрый день. Еще такая проблема возникла. Есть форма где нужно редактировать информацию, ввел нужные коррективы и нажал кнопку...

Обновление данных в activity - Программирование Android
Всем доброй ночи! Как обновить данные в активити при возврате из диалога или из другой активити, т.е. когда фокус возвращается на...

Обновление данных приложения - Программирование Android
Здравствуйте, есть простенькое приложение, которое показывает количество дней прошедших в году и отображает прогресс года. Проблема в...

ExpandableListView обновление данных - Программирование Android
Каким образом мне обновить его? Чтобы я изменил данные массива и обновил. Объявили переменные public class MainActivity ...

Обновление данных адаптера - Программирование Android
Здравствуйте. Помогите, кто сталкивался. Есть список, где в зависимости от значения свойства отображенного объекта подставляется лейаут: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
28.02.2015, 13:31     Обновление Базы данных #2
Alex_Fedor, в onResume в активити просто обновляйте данные, либо используйте ContentObserver
Alex_Fedor
29 / 29 / 4
Регистрация: 20.01.2015
Сообщений: 219
28.02.2015, 13:39  [ТС]     Обновление Базы данных #3
Спасибо огромное за ваше участие, но строчка кода все расставит по своим местам.
что надо написать в onResume. А то гугл на запрос предлагает прошивки менять.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
28.02.2015, 13:41     Обновление Базы данных #4
Alex_Fedor, а как Вы просматриваете БД в активити1?
Alex_Fedor
29 / 29 / 4
Регистрация: 20.01.2015
Сообщений: 219
28.02.2015, 13:54  [ТС]     Обновление Базы данных #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
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
public class MainActivity extends Activity {
TextView engWord, rusWord, association;
ImageView imageWord;
DictonaryDB dictDB;
Cursor cur;
SQLiteDatabase db;
//int engWordColIndex,rusWordColIndex,assWordColIndex,idImageColIndex;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        engWord=(TextView) findViewById(R.id.engWord);
        rusWord=(TextView) findViewById(R.id.rusWord);
        association=(TextView) findViewById(R.id.association);
        imageWord=(ImageView) findViewById(R.id.imageWord);
        
        dictDB=new DictonaryDB(this);
        
        
        db = dictDB.getReadableDatabase();
        cur=db.query("dictonary", null, null, null, null, null, null);
        cur.moveToFirst();
        onShowRecord();//все создали курсор установили показываем запись из БД
    }
    public void onClickBnt(View v) {
        
        
        switch (v.getId()) {
        case R.id.btnEdit://переход в другую активность добавления слова
            int positionCursor=cur.getPosition();
            Intent intent=new Intent(this, EditDictonary.class);
            intent.putExtra("positionCursor", positionCursor);
            //cur.close();
            //db.close();
            startActivity(intent);
            break;
        case R.id.btnBack://показываем предыдущего слова если записи больше нет, показ последнего слова
            if(!cur.moveToPrevious()){
                cur.moveToLast();
            }
            onShowRecord();//курсор установили показываем запись из БД
            break;
        case R.id.btnForward://показываем следующее слово если записи больше нет, показ первого слова
            if(!cur.moveToNext()){
                cur.moveToFirst();
            }
            onShowRecord();//курсор установили показываем запись из БД
            break;
        default:
            break;
        }
    }
    public void onShowRecord(){//показываем что записанов БД
        String puthImage,visible;
        int engWordColIndex=cur.getColumnIndex("engWord");
        int rusWordColIndex=cur.getColumnIndex("rusWord");
        int assWordColIndex=cur.getColumnIndex("association");
        int putchImageColIndex=cur.getColumnIndex("puthImage");
        int visibleControll=cur.getColumnIndex("visible");
        //int idRecord=cur.;
        visible=cur.getString(visibleControll);
        if(visible.indexOf("no") != -1){//картинку перевод иассоциацию показывать не надо
            rusWord.setVisibility(View.INVISIBLE);
            association.setVisibility(View.INVISIBLE);
            imageWord.setVisibility(View.INVISIBLE);    
        }
        else {
            rusWord.setVisibility(View.VISIBLE);
            association.setVisibility(View.VISIBLE);
            imageWord.setVisibility(View.VISIBLE);
        }
        engWord.setText(cur.getString(engWordColIndex));
        rusWord.setText(cur.getString(rusWordColIndex));
        association.setText(cur.getString(assWordColIndex));
        puthImage=cur.getString(putchImageColIndex);
        if(puthImage.indexOf("PoliglotDictonaryPictures") != -1){
            //Log.d(MY_LOG, "ищем картинку в папке assets");
            try {
                // получаем входной поток
                InputStream ims = getAssets().open(puthImage);
                // загружаем как Drawable
                Drawable d = Drawable.createFromStream(ims, null);
                // выводим картинку в ImageView
                imageWord.setImageDrawable(d);
            }
            catch(IOException ex) {
                imageWord.setImageResource(R.drawable.ic_launcher);
            }
        }
        else {
            //Log.d(MY_LOG, "ищем картинку путь  "+patch);
            try {//если картинки по этому пути нет, должно выскочить исключение
                FileInputStream fis=new FileInputStream(puthImage);
                Drawable dravImage=Drawable.createFromStream(fis, null);
                imageWord.setImageDrawable(dravImage);
            }
            catch (Exception e) {// обрабатываем исключение показываем ic_launcher
                imageWord.setImageResource(R.drawable.ic_launcher);
            }
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
}
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
28.02.2015, 14:36     Обновление Базы данных #6
Alex_Fedor, а как Вы просматриваете БД в активити1?
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
dictDB=new DictonaryDB(this);
db = dictDB.getReadableDatabase();
* * * * cur=db.query("dictonary", null, null, null, null, null, null);
* * * * cur.moveToFirst();
* * * * onShowRecord();//все создали курсор установили показываем запись из БД
Весь этот код перенесите в такой метод:

Java
1
2
3
4
5
6
7
8
9
10
11
@Override
protected void onResume() {
super.onResume();
 dictDB=new DictonaryDB(this);
        
        
        db = dictDB.getReadableDatabase();
        cur=db.query("dictonary", null, null, null, null, null, null);
        cur.moveToFirst();
        onShowRecord();//все создали курсор установили показываем запись из БД
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2015, 15:47     Обновление Базы данных
Еще ссылки по теме:

Обновление данных в ArrayAdapter - Программирование Android
Добрый день. Есть созданный ArrayAdapter. Он добавляется в listView, при достижении конца списка происходит получение информации и...

Обновление данных один раз в сутки - Программирование Android
Здравствуйте, участники форума. Чувствую что объяснить будет не просто, но я буду стараться. Суть - конвертер валют, загружает курсы с...

Обновление данных в ViewPager при перелистывании вкладок - Программирование Android
Есть две вкладки (смотри картинку). На первой нажимаем кнопку плюс - пишем имя - сохраняю item. Теперь, при перелистывании этот Item...

Обновление данных Activity при нажатии на кнопку - Программирование Android
Приветствую всех. Проблема такая: необходимо обновлять данные(ImageView, TextView и т.п.) в Activity при нажатии на кнопку. Создаю...

Чтение данных из базы - Программирование Android
Доброго времени суток ув. форумчане! Возникла проблема при попытке прочитать данные из БД, которая сохранена в external storage. Помогите...


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

Или воспользуйтесь поиском по форуму:
Alex_Fedor
29 / 29 / 4
Регистрация: 20.01.2015
Сообщений: 219
28.02.2015, 15:47  [ТС]     Обновление Базы данных #7
Может кому и пригодится. С попытки № 100500
Сделал через startActivityForResult;
В Активити2 после редактирования базы написал такой код
Java
1
2
3
4
5
db.update("dictonary", cv, "_id=?",  new String[] { String.valueOf(idRecord)});
            Intent  intent=new Intent();
            intent.putExtra("curPosition", cur.getPosition());
            setResult(RESULT_OK, intent);
            finish();
Соотв в Активити1 в методе onActivityResult такой код. По простому закрываем полностью базу, затем ее заново открываем и устанавливаем курсор на позицию которую редактировали
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        int posCur=data.getIntExtra("curPosition", -1);
        if(posCur < 0){
            return ;
        }
        Log.d(MY_LOG, "вышли из EditDictonary позиция сурсора = "+posCur);
        cur.close();
        db.close();
        dictDB.close();
        dictDB=new DictonaryDB(this);
        db = dictDB.getReadableDatabase();
        cur=db.query("dictonary", null, null, null, null, null, null);
        cur.moveToPosition(posCur);
        onShowRecord();
    }
Yandex
Объявления
28.02.2015, 15:47     Обновление Базы данных
Ответ Создать тему
Опции темы

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