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

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

Войти
Регистрация
Восстановить пароль
 
Leks2
2 / 2 / 1
Регистрация: 14.11.2014
Сообщений: 105
#1

Как вывести в BaseAdapter картинки, занесенные в таблицу? - Android

27.01.2015, 21:14. Просмотров 449. Ответов 13
Метки нет (Все метки)

Всем привет! Подскажите пожалуйста, как вывести в BaseAdapter картинки которые я занес в таблицу
Java
1
2
3
4
5
6
7
8
9
  @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(90, 90));
       
     return imageView;
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
28.01.2015, 11:57     Как вывести в BaseAdapter картинки, занесенные в таблицу? #2
А в каком виде картинки в таблице??/
Я долго маялся с этим вопросом, в итоге нормальный способ оказался в базе держать название картинки, а сами картинки в ресурсах drawable
Код должен быть такой:
Java
1
2
img1.setImageResource(getResources().getIdentifier(cursor.getString(cursor.getColumnIndex(DataBase.COLUMN_MIMG1)),
                "drawable", getPackageName()));
Курсор у меня вот такой:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public Cursor getMaxArt() {
 
        SQLiteDatabase db = getWritableDatabase();
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
        String sqlTables = "maxim_ru";
 
 
        qb.setTables(sqlTables);
        String rawq = "SELECT * FROM maxim_ru where name="+"'"+maxim_name+"'";
        Cursor c = db.rawQuery(rawq, null);
        c.moveToFirst();
        return c;
 
    }
Добавлено через 2 минуты
Ну и соответственно
DataBase.COLUMN_MIMG1 соответствует названию колонки в которой хранятся имена файлов
Leks2
2 / 2 / 1
Регистрация: 14.11.2014
Сообщений: 105
28.01.2015, 21:04  [ТС]     Как вывести в BaseAdapter картинки, занесенные в таблицу? #3
NOSC, спасибо за ответ! я так и сделал ,картинки внес в drawable ,а данные в таблицу внес

Добавлено через 3 часа 45 минут
сделал вот так,но что то с ошибкой закрывается
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
@Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 3;
    }
@Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
   ToDoDatabase hel = new ToDoDatabase(mContext);
    SQLiteDatabase db = hel.getWritableDatabase();
    String query = "SELECT " + ToDoDatabase.IMAGE + " FROM " + ToDoDatabase.TABLE_NAME;
    Cursor c = db.rawQuery(query, null);
    ImageView imageView = new ImageView(mContext);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(90, 90));
     imageView.setImageResource(mContext.getResources().getIdentifier(c.getString(c.getColumnIndex(ToDoDatabase.IMAGE)),
            "drawable", mContext.getPackageName()));
    return imageView;
    }
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
29.01.2015, 13:45     Как вывести в BaseAdapter картинки, занесенные в таблицу? #4
Цитата Сообщение от Leks2 Посмотреть сообщение
сделал вот так,но что то с ошибкой закрывается
C какой ошибкой? Лог можете показать
Leks2
2 / 2 / 1
Регистрация: 14.11.2014
Сообщений: 105
29.01.2015, 20:29  [ТС]     Как вывести в BaseAdapter картинки, занесенные в таблицу? #5
NOSC, не пойму как сохранить логи из LogCat всем файлом
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
30.01.2015, 11:22     Как вывести в BaseAdapter картинки, занесенные в таблицу? #6
Если в эклипсе работаете, то надо выделить текст в логкате и нажать иконку сохранить. В Андройд студии проблем вообще не должно быть
Leks2
2 / 2 / 1
Регистрация: 14.11.2014
Сообщений: 105
30.01.2015, 19:19  [ТС]     Как вывести в BaseAdapter картинки, занесенные в таблицу? #7
NOSC,
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
01-30 16:02:20.732: E/AndroidRuntime(706): FATAL EXCEPTION: main
01-30 16:02:20.732: E/AndroidRuntime(706): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 11
01-30 16:02:20.732: E/AndroidRuntime(706):  at android.database.AbstractCursor.checkPosition(AbstractCursor.java:434)
01-30 16:02:20.732: E/AndroidRuntime(706):  at andr01-30 16:02:20.732: E/AndroidRuntime(706):   at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
01-30 16:02:20.732: E/AndroidRuntime(706):  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
01-30 16:02:20.732: E/AndroidRuntime(706):  at ru.ru.animalsound.ImageAdapter.getView(ImageAdapter.java:50)
01-30 16:02:20.732: E/AndroidRuntime(706):  at android.widget.AbsListView.obtainView(AbsListView.java:2033)
01-30 16:02:20.732: E/AndroidRuntime(706):  at android.widget.GridView.onMeasure(GridView.java:1026)
01-30 16:02:20.732: E/AndroidRuntime(706):  at android.view.View.measure(View.java:12603)
01-30 16:02:20.732: E/AndroidRuntime(706):  at android.v01-30 16:02:20.732: E/AndroidRuntime(706):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
iew.ViewGroup.measureChildWithMargins(ViewGroup.java:4677)
01-30 16:02:20.732: E/AndroidRuntime(706):  at android.widget.TableLayout.measureChildBeforeLayout(TableLayout.java:456)
01-30 16:02:20.732: E/AndroidRuntime(706):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
01-30 16:02:20.732: E/AndroidRuntime(706):  at android.widget.TableLayout.measureVertical(TableLayout.java:468)
я не все скопировал там еще были строчки
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
30.01.2015, 20:17     Как вывести в BaseAdapter картинки, занесенные в таблицу? #8
Вообще, это круто в методе адаптера getView() формировать источник данных ...

А также в чем сакральный смысл вот этих двух "возвратов"?

Java
1
2
3
4
5
@Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 3;
    }
Java
1
2
3
4
@Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
Вы сами, написав, понимаете, что происходит?

Добавлено через 17 минут
И вообще, зачем под курсор придумыввать свой адаптер?
Вы уверены, что ревзойдете разработчиков того же SimpleCursorAdapter?
Leks2
2 / 2 / 1
Регистрация: 14.11.2014
Сообщений: 105
30.01.2015, 20:36  [ТС]     Как вывести в BaseAdapter картинки, занесенные в таблицу? #9
Armagedo, подскажите пожалуйста ,как решить эту проблему
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
30.01.2015, 23:45     Как вывести в BaseAdapter картинки, занесенные в таблицу? #10
Все же перед тем как вопросы задавать - нужно хотя бы час провести, пытаясь разобраться.

Теперь:
1) Курсор выдает ошибку, потому что он получен, но работа с ним не начата - он не находится ни на какой позиции.
Желательно работу с курсором начинать все же так:
Java
1
2
3
if (cursor.moveToFirst()){
    // some code
}
так мы одновременно проверяем есть ли в курсоре вообще что-нибудь и попадаем на его первую позицию если есть.

2)При работе с курсором НАДО использовать CursorAdapter - он даже проще

3)Смысл методов getCount() и getItem() надо понимать - сейчас они возвращают чушь

4)При работе с изображениями в листах и гридах используйте LRUCache - иначе с памятью грохнетесь полюбому
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
01.02.2015, 23:49     Как вывести в BaseAdapter картинки, занесенные в таблицу? #11
Цитата Сообщение от Leks2 Посмотреть сообщение
Armagedo, подскажите пожалуйста ,как решить эту проблему
Чего то как то сложно у вас.
У меня курсоры все в классе DataBase вынесены, как и все константы для работы с БД!
Во вторых что у вас там за mContext???

Курсор нужно определить сначала, потом поставить куда следует, в вашем случае вместо mContext:
Java
1
2
imageView.setImageResource(mContext.getResources().getIdentifier(c.getString(c.getColumnIndex(ToDoDatabase.IMAGE)),
            "drawable", mContext.getPackageName()));
Я может что-то не понимаю и просто делаю, но у меня работает!
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
02.02.2015, 10:52     Как вывести в BaseAdapter картинки, занесенные в таблицу? #12
Цитата Сообщение от NOSC Посмотреть сообщение
Я может что-то не понимаю и просто делаю, но у меня работает!
Я бы для начала попробовал вообще не переопределять getView() лишь с целью повесить изображение на ImageView, а поручить это самому курсор-адаптеру.
Вполне возможно он раздуплится, что ему подсовывают и справится с задачей без вот того стохвостатого "чудовища"
Java
1
mContext.getResources().getIdentifier(c.getString(c.getColumnIndex(ToDoDatabase.IMAGE))
Leks2
2 / 2 / 1
Регистрация: 14.11.2014
Сообщений: 105
02.02.2015, 16:30  [ТС]     Как вывести в BaseAdapter картинки, занесенные в таблицу? #13
Цитата Сообщение от NOSC Посмотреть сообщение
Во вторых что у вас там за mContext???
mContext ,это у меня public ImageAdapter(Context c ){
mContext = c;

}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2015, 21:00     Как вывести в BaseAdapter картинки, занесенные в таблицу?
Еще ссылки по теме:

Android Как реализовать движение картинки?
Как загружать картинки на стену Вконтакте? Android
Android Не вижу абстрактных методов в классе BaseAdapter
Android BaseAdapter
Android Вывести в лаяуте таблицу с шапкой и колонками

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

Или воспользуйтесь поиском по форуму:
Leks2
2 / 2 / 1
Регистрация: 14.11.2014
Сообщений: 105
03.02.2015, 21:00  [ТС]     Как вывести в BaseAdapter картинки, занесенные в таблицу? #14
Все вывел картинки через SimpleCursorAdapter,спасибо за подсказку!Теперь не могу понять ,как повесить нажатие на позицию картинки ,xnj, проигрывалась мелодия по одному id ,тоесть у меня картинка и мелодия в одном id
Java
1
2
3
4
public void onItemClick(AdapterView<?> parent, View view,
                    int pos, long id) {
MediaPlayer  mediaPlayer = MediaPlayer.create();
}
MediaPlayer mediaPlayer = MediaPlayer.create();
Yandex
Объявления
03.02.2015, 21:00     Как вывести в BaseAdapter картинки, занесенные в таблицу?
Ответ Создать тему
Опции темы

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