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

Как загружать/хранить файл в SQLite? - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Как правильно сверстать в android http://www.cyberforum.ru/android-dev/thread1373698.html
Мне нужно что-нибудь(курсы, видео уроки, книги, статьи). Как правильно создать макет в фотошопе и сверстать его в android
Android Работа с данными Android приложение Я создаю приложение по исторической тематике . И появилась проблема . Я создал активити с тремя кнопками : Основные события ,даты ,интересное . И мне надо сделать так что бы при нажатии на эти кнопки на этом же акстивити выводился текст , картинки и может кнопки . Как это сделать ? Вариант с DialogFragment не рассматривается . Я думаю что с помощью Базы данных ,но в интернете не нашел... http://www.cyberforum.ru/android-dev/thread1373695.html
Android Как каждую секунду менять текст TextView?
Подскажите, пожалуйста, как каждую секунду в течение 1,5 минуты менять текст в TextView?
Метод для прослушивания изменения текста EditText Android
Подскажите, пожалуйста, как называется метод для прослушивания изменения текста в EditText и метод для прослушивания того, что любой view в фокусе. Пальцем нажимаю на EditText, и он становится активным, а как называется метод, который происходит во время этого действия? Дальше, нажимаю любую клавишу на клавиатуре, а как называется метод, который происходит во время того, как текст в EditText...
Android Анимация поворота http://www.cyberforum.ru/android-dev/thread1373509.html
Здравствуйте! Я столкнулся с такой проблемой. У меня поворачивается картинка на некоторый угол. Вроде бы всё хорошо, но когда анимация доходит до конца, виден быстрый рывок на начальное положение, а затем возвращение туда где и должна быть. Как мне это исправить, как сделать так, чтоб после поворота картинка не возвращалась на начальное положение, а оставалась на месте? Пока что пробую так: ...
Android Клавиатура Genymotion Как заставить работать клавиатуру в эмуляторе Genymotion? Андроидовская не всплывает, а на родную тоже не реагирует. подробнее

Показать сообщение отдельно
Alex_Fedor
29 / 29 / 4
Регистрация: 20.01.2015
Сообщений: 215
27.02.2015, 08:42     Как загружать/хранить файл в SQLite?
Мучился примерно с такой же задачей.
По порядку
В папке assets файлы доступны только для чтения. Эта папка нужна для того чтобы вы могли положить туда свои файлы и сконвертировать их в исполняемый файл. Доступ к этим файлам осуществляется через Assetsmanger. Рекомендация создаете new Folder в папке Assets. Имя должно быть уникальным, так чтобы юзер не создавал у себя на устройстве такую же папку. Например так, путь к этим файлам выглядит как "PoliglotDictonaryPictures/hold.jpeg"
Узнать где находится ваш файл в папке assets или на устройстве можно по пути анализируя путь как строку.
Вот код как я это сделал. Загружаю картинку путь к которой хранится в бд.
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
public class MainActivity extends Activity {
TextView engWord, rusWord, association;
ImageView imageWord;
DictonaryDB dictDB;
Cursor cur;
//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);
        
        
        SQLiteDatabase 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);
            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;
        int aaa;
        boolean visible=true;
        int engWordColIndex=cur.getColumnIndex("engWord");
        int rusWordColIndex=cur.getColumnIndex("rusWord");
        int assWordColIndex=cur.getColumnIndex("association");
        int idImageColIndex=cur.getColumnIndex("puthImage");
        int visibleControll=cur.getColumnIndex("visible");
        aaa=cur.getInt(visibleControll);
        if(aaa == 1){
            visible=true;
        }
        else {
            visible=false;
        }
        //engWord.setVisibility(aaa);
        engWord.setText(cur.getString(engWordColIndex));
        rusWord.setText(cur.getString(rusWordColIndex));
        association.setText(cur.getString(assWordColIndex));
        puthImage=cur.getString(idImageColIndex);
        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;
    }
 
}
Таблицу создаем следующим образом вот код. Новый класс наследник от SQLiteOpenHelper. Если много записей то советуют воспользоваться Sql Manager. Правда еще не пробовал.
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
public class DictonaryDB extends SQLiteOpenHelper {
    public static final String DB_DICT="dictDB.db";
    public static final String TABLE_NAME="dictonary";
    public static final String ENG_WORD="engWord";
    public static final String RUS_WORD="rusWord";
    public static final String ASSOCIATION="association";
    public static final String PUTCH_IMAGE="puthImage";
    public static final String VISIBLE="visible";
    public DictonaryDB(Context context){//, String name, CursorFactory factory,
            //int version) {
        super(context, DB_DICT, null, 1);
        // TODO Auto-generated constructor stub
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        boolean aaa=true;
        db.execSQL("create table " +TABLE_NAME
                +" (id integer primary key autoincrement, "
                +ENG_WORD+" text not null, "
                +RUS_WORD+" text not null, "
                +ASSOCIATION+" text, "
                +PUTCH_IMAGE+" text, " 
                +VISIBLE+" integer );"
                );
        ContentValues values=new ContentValues();
        values.put(ENG_WORD, "compare");
        values.put(RUS_WORD, "сравнивать");
        values.put(ASSOCIATION, "СРАВНЕНИЕ сигналов на компараторе");
        values.put(PUTCH_IMAGE, "PoliglotDictonaryPictures/compare.jpeg");
        values.put(VISIBLE, 1);
        db.insert(TABLE_NAME, ENG_WORD, values);
        
        values.put(ENG_WORD, "may");
        values.put(RUS_WORD, "мочь, иметь право");
        values.put(ASSOCIATION, "дед  в мае МОЖЕТ но прав не имеет");
        values.put(PUTCH_IMAGE, "PoliglotDictonaryPictures/may.jpeg");
        values.put(VISIBLE, 1);
        db.insert(TABLE_NAME, ENG_WORD, values);
        
        values.put(ENG_WORD, "ring");
        values.put(RUS_WORD, "звонить");
        values.put(ASSOCIATION, "на ринге ЗВОНИТ гонг");
        values.put(PUTCH_IMAGE, "PoliglotDictonaryPictures/ring.jpeg");
        values.put(VISIBLE, 1);
        db.insert(TABLE_NAME, ENG_WORD, values);
        
 
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
 
    }
 
}
В коде есть такие строчки
Java
1
2
3
4
int positionCursor=cur.getPosition();
            Intent intent=new Intent(this, EditDictonary.class);
            intent.putExtra("positionCursor", positionCursor);
            startActivity(intent);
Это для передачи записи которую просматриваем в другую активность. Где предполагается редактирование данных
В активити приемнике соотв прописываем.
Java
1
2
3
4
5
6
7
8
9
10
//Log.d(MY_LOG, "Получаем интент ");
        Intent intent=getIntent();
        positionCursor=intent.getIntExtra("positionCursor",-1);
        //Log.d(MY_LOG, "Значение  positionCursor = "+positionCursor);
        //Создаем обьект базы данных открываем базу на запись
        dictDB=new DictonaryDB(this);
        SQLiteDatabase db=dictDB.getWritableDatabase();
        //Log.d(MY_LOG, "ставим курсор на позицию ");
        cur=db.query("dictonary", null, null, null, null, null, null);
        cur.moveToPosition(positionCursor);
Добавлено через 11 минут
Пути к файлам находящимся SdCard или на устройстве прописываются соотв.
String patch="/mnt/sdcard/DictonaryPictures/may.jpeg";
String patch="/data/ProbaFolder/ImageDict/let.jpeg";
если делаете проект в эклипсе, то с SdCard целый квест подробно описал тут.http://forum.startandroid.ru/viewtop...013b320b9cac35
П.С. Коды рабочие, но еще не закончены, есть лишние строки.
 
Текущее время: 09:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru