Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 20 сен 2018, 17:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 09 мар 2014, 09:48 

Зарегистрирован: 09 мар 2014, 09:45
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Как реализовать GridView внутри фрагмента?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 09 мар 2014, 13:20 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
Nurzhan писал(а):
Как реализовать GridView внутри фрагмента?

так же само как и в активити)) отличий то нету

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 13 июн 2014, 18:01 
Аватар пользователя

Зарегистрирован: 06 окт 2013, 19:03
Сообщений: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте! Пожалуйста, подскажите мне как вывести данные из SQL базы в GridView? Чтоб было понятней, мне надо просто таблица калорийности, несколько столбцов и много строк. Нашел пример с использованием ListView, но он мне не подходит.
Код БДХелпера
Код: [ Загрузить ] [ Скрыть ]
  1. import java.io.FileOutputStream; 
  2. import java.io.IOException; 
  3. import java.io.InputStream; 
  4. import java.io.OutputStream; 
  5.  
  6. import android.content.Context; 
  7. import android.database.SQLException; 
  8. import android.database.sqlite.SQLiteDatabase; 
  9. import android.database.sqlite.SQLiteOpenHelper; 
  10. import android.util.Log; 
  11.  
  12. public class ExternalDbOpenHelper extends SQLiteOpenHelper { 
  13.  
  14.     //Путь к папке с базами на устройстве 
  15.     public static String DB_PATH; 
  16.     //Имя файла с базой 
  17.     public static String DB_NAME; 
  18.     public SQLiteDatabase database; 
  19.     public final Context context; 
  20.  
  21.     public SQLiteDatabase getDb() { 
  22.         return database; 
  23.     } 
  24.  
  25.     public ExternalDbOpenHelper(Context context, String databaseName) { 
  26.         super(context, databaseName, null, 1); 
  27.         this.context = context; 
  28.         //Составим полный путь к базам для вашего приложения 
  29.         String packageName = context.getPackageName(); 
  30.         DB_PATH = String.format("//data//data//%s//databases//", packageName); 
  31.         DB_NAME = databaseName; 
  32.         openDataBase(); 
  33.     } 
  34.  
  35.     //Создаст базу, если она не создана 
  36.     public void createDataBase() { 
  37.         boolean dbExist = checkDataBase(); 
  38.         if (!dbExist) { 
  39.             this.getReadableDatabase(); 
  40.             try { 
  41.                 copyDataBase(); 
  42.             } catch (IOException e) { 
  43.                 Log.e(this.getClass().toString(), "Copying error"); 
  44.                 throw new Error("Error copying database!"); 
  45.             } 
  46.         } else { 
  47.             Log.i(this.getClass().toString(), "Database already exists"); 
  48.         } 
  49.     } 
  50.     //Проверка существования базы данных 
  51.     private boolean checkDataBase() { 
  52.         SQLiteDatabase checkDb = null; 
  53.         try { 
  54.             String path = DB_PATH + DB_NAME; 
  55.             checkDb = SQLiteDatabase.openDatabase(path, null, 
  56.                     SQLiteDatabase.OPEN_READONLY); 
  57.         } catch (SQLException e) { 
  58.             Log.e(this.getClass().toString(), "Error while checking db"); 
  59.         } 
  60.         //Андроид не любит утечки ресурсов, все должно закрываться 
  61.         if (checkDb != null) { 
  62.             checkDb.close(); 
  63.         } 
  64.         return checkDb != null; 
  65.     } 
  66.     //Метод копирования базы 
  67.     private void copyDataBase() throws IOException { 
  68.         // Открываем поток для чтения из уже созданной нами БД 
  69.         //источник в assets 
  70.         InputStream externalDbStream = context.getAssets().open(DB_NAME); 
  71.  
  72.         // Путь к уже созданной пустой базе в андроиде 
  73.         String outFileName = DB_PATH + DB_NAME; 
  74.  
  75.         // Теперь создадим поток для записи в эту БД побайтно 
  76.         OutputStream localDbStream = new FileOutputStream(outFileName); 
  77.  
  78.         // Собственно, копирование 
  79.         byte[] buffer = new byte[1024]; 
  80.         int bytesRead; 
  81.         while ((bytesRead = externalDbStream.read(buffer)) > 0) { 
  82.             localDbStream.write(buffer, 0, bytesRead); 
  83.         } 
  84.         // Мы будем хорошими и закроем потоки 
  85.         localDbStream.close(); 
  86.         externalDbStream.close(); 
  87.  
  88.     } 
  89.  
  90.     public SQLiteDatabase openDataBase() throws SQLException { 
  91.         String path = DB_PATH + DB_NAME; 
  92.         if (database == null) { 
  93.             createDataBase(); 
  94.             database = SQLiteDatabase.openDatabase(path, null, 
  95.                 SQLiteDatabase.OPEN_READWRITE); 
  96.         } 
  97.         return database; 
  98.     } 
  99.     @Override 
  100.     public synchronized void close() { 
  101.         if (database != null) { 
  102.             database.close(); 
  103.         } 
  104.         super.close(); 
  105.     } 
  106.     @Override 
  107.     public void onCreate(SQLiteDatabase db) {} 
  108.     @Override 
  109.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} 


Код Активити
Код: [ Загрузить ] [ Скрыть ]
  1. import java.util.ArrayList; 
  2.  
  3. import android.app.ListActivity; 
  4. import android.database.Cursor; 
  5. import android.database.sqlite.SQLiteDatabase; 
  6. import android.os.Bundle; 
  7. import android.widget.ArrayAdapter; 
  8. import android.widget.ListView; 
  9. import diplom.proba2.bdhelper.ExternalDbOpenHelper; 
  10.  
  11. public class ActivityTable extends ListActivity { 
  12.  
  13.     private static final String DB_NAME = "mybd.sqlite3"; 
  14.     //Хорошей практикой является задание имен полей БД константами 
  15.     private static final String TABLE_NAME = "kalor"; 
  16.     private static final String PROD_ID = "_id"; 
  17.     private static final String PROD_NAME = "name"; 
  18.     private static final String PROD_BEL = "bel"; 
  19.      
  20.  
  21.     private SQLiteDatabase database; 
  22.     private ListView listView; 
  23.     private ArrayList kalor; 
  24.  
  25.     @Override 
  26.     public void onCreate(Bundle savedInstanceState) { 
  27.         super.onCreate(savedInstanceState); 
  28.         setContentView(R.layout.ras_table); 
  29.  
  30.         //Наш ключевой хелпер 
  31.         ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME); 
  32.         database = dbOpenHelper.openDataBase(); 
  33.         //Все, база открыта! 
  34.         fillFreinds(); 
  35.         setUpList(); 
  36.     } 
  37.  
  38.     private void setUpList() { 
  39.         //Испльзуем стандартный адаптер и layout элемента для краткости 
  40.         setListAdapter(new ArrayAdapter<String>(this, 
  41.                         android.R.layout.simple_list_item_1, kalor)); 
  42.         listView = getListView(); 
  43.  
  44.  
  45. //Извлечение элементов из базы данных 
  46. private void fillFreinds() { 
  47.     kalor = new ArrayList<String>(); 
  48.     Cursor prodCursor = database.query(TABLE_NAME, new String[] {PROD_ID, PROD_NAME}, 
  49.                                                             null, null,null,null, PROD_NAME); 
  50.     prodCursor.moveToFirst(); 
  51.         if(!prodCursor.isAfterLast()) { 
  52.             do { 
  53.                 String name = prodCursor.getString(1); 
  54.                 kalor.add(name);                 
  55.             } while (prodCursor.moveToNext()); 
  56.         } 
  57.         prodCursor.close(); 
  58.     } 


Ну и лейаут
Код: [ Загрузить ] [ Скрыть ]
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     > 
  7. <TextView   
  8.     android:layout_width="fill_parent"  
  9.     android:layout_height="wrap_content"  
  10.     android:text="@string/hello" 
  11.     /> 
  12.      
  13. <ListView  
  14.     android:id="@android:id/list" 
  15.     android:layout_width="fill_parent" 
  16.     android:layout_height="fill_parent"> 
  17.     </ListView>      
  18.  
  19. </LinearLayout> 


Извиняюсь, если не в тему :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 13 июн 2014, 20:23 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
гридвью вообще редко используется. Листвью гораздо удобнее для этих целей.

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 14 июн 2014, 00:20 
Аватар пользователя

Зарегистрирован: 06 окт 2013, 19:03
Сообщений: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Foenix писал(а):
гридвью вообще редко используется. Листвью гораздо удобнее для этих целей.

Ну на сколько я понял, с листвью не получится таблицу сделать, а она то мне и нужна(


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 16 сен 2014, 17:30 

Зарегистрирован: 16 сен 2014, 17:23
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
ребят, вопрос может не туда, но про GridLayout ничего здесь не нашол.
Вопрос в следующем, как программно менять ширину/высоту кнопок в Gridlayout'e.

gridLayoutsParams().width = 10; - выдает ошибку


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 07 мар 2015, 12:13 

Зарегистрирован: 03 ноя 2014, 19:39
Сообщений: 33
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
Всем привет. Подскажите, пожалуйста, как реализовать переход к следующему элементу в GridView. Необходимо при нажатии на один элемент, закрасить его и следующий элемент.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 07 мар 2015, 14:47 
Аватар пользователя

Зарегистрирован: 23 ноя 2013, 16:08
Сообщений: 1107
Откуда: Ukraine
Благодарил (а): 31 раз.
Поблагодарили: 175 раз.
Sanek517s писал(а):
Всем привет. Подскажите, пожалуйста, как реализовать переход к следующему элементу в GridView. Необходимо при нажатии на один элемент, закрасить его и следующий элемент.


get item at position ( position + 1 ) под айтемом в идеале подразумевается кастомный класс-контейнер с одним из полей int color для цвета.

_________________
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 11 мар 2015, 19:03 

Зарегистрирован: 03 ноя 2014, 19:39
Сообщений: 33
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
doter.ua писал(а):
Sanek517s писал(а):
Всем привет. Подскажите, пожалуйста, как реализовать переход к следующему элементу в GridView. Необходимо при нажатии на один элемент, закрасить его и следующий элемент.


get item at position ( position + 1 ) под айтемом в идеале подразумевается кастомный класс-контейнер с одним из полей int color для цвета.


Можно пример на коде? Я использовал get item at position но я смог только получить другое значение. Я все так же не могу взаимодействовать с другими элементами grid при нажатии на один из его элементов


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 22 мар 2015, 14:28 

Зарегистрирован: 03 ноя 2014, 19:39
Сообщений: 33
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
kifir писал(а):
Здравствуйте! А можно ли задать фиксированную ширину для первой ячейки одну, а для остальных другую?

Насколько мне известно - нет.

Кто знает, как перерисовать (обновить) GridView?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 31 дек 2016, 00:10 

Зарегистрирован: 30 дек 2016, 23:52
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хотел спросить, столкнулся с такой проблемой, есть грид, по нажатию на любой итем вызывается диалоговое окно для ввода значений (которое внесется в эту часть грида), после ввода значений я переприменяю адаптер, и как не странно, он скидывает его в самое начало, это в принципе логично, так как он его перерисовует, но может кто знает, есть ли какой то метод что бы он не скидывал меня в начало ? Grid.setSelection(position); пробовал таким способом, запоминаю какой итем последний виден на экране и потом просто заставляю сместится к нему, но все равно не всегда корректно работает. За помощь буду благодарен, если нужны какие то части кода, пишите. А если я где то не дочитал и этот вопрос расскрывался, прошу простить.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 26 янв 2017, 21:17 

Зарегистрирован: 23 дек 2016, 07:52
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Как получить доступ к элементам gridview из кода? - например получить количество элементов или какой то конкретный элемент , пробовал использовать getChildCount() , но вылетает Resource not found


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 57. GridView и его атрибуты
СообщениеДобавлено: 16 авг 2018, 11:42 

Зарегистрирован: 09 июн 2016, 21:56
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Всем привет!Не подскажите как при касании ячейки, сменить текст внутри этой ячейке?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB