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

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

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

Показать сообщение отдельно
Alex_Fedor
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 273
27.02.2015, 08:42
Мучился примерно с такой же задачей.
По порядку
В папке 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
П.С. Коды рабочие, но еще не закончены, есть лишние строки.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru