Урок 57. GridView и его атрибуты
Re: Урок 57. GridView и его атрибуты
Как реализовать GridView внутри фрагмента?
Re: Урок 57. GridView и его атрибуты
так же само как и в активити)) отличий то нетуNurzhan писал(а):Как реализовать GridView внутри фрагмента?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 57. GridView и его атрибуты
Здравствуйте! Пожалуйста, подскажите мне как вывести данные из SQL базы в GridView? Чтоб было понятней, мне надо просто таблица калорийности, несколько столбцов и много строк. Нашел пример с использованием ListView, но он мне не подходит.
Код БДХелпера
Код Активити
Ну и лейаут
Извиняюсь, если не в тему
Код БДХелпера
Код: Выделить всё
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class ExternalDbOpenHelper extends SQLiteOpenHelper {
//Путь к папке с базами на устройстве
public static String DB_PATH;
//Имя файла с базой
public static String DB_NAME;
public SQLiteDatabase database;
public final Context context;
public SQLiteDatabase getDb() {
return database;
}
public ExternalDbOpenHelper(Context context, String databaseName) {
super(context, databaseName, null, 1);
this.context = context;
//Составим полный путь к базам для вашего приложения
String packageName = context.getPackageName();
DB_PATH = String.format("//data//data//%s//databases//", packageName);
DB_NAME = databaseName;
openDataBase();
}
//Создаст базу, если она не создана
public void createDataBase() {
boolean dbExist = checkDataBase();
if (!dbExist) {
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
Log.e(this.getClass().toString(), "Copying error");
throw new Error("Error copying database!");
}
} else {
Log.i(this.getClass().toString(), "Database already exists");
}
}
//Проверка существования базы данных
private boolean checkDataBase() {
SQLiteDatabase checkDb = null;
try {
String path = DB_PATH + DB_NAME;
checkDb = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLException e) {
Log.e(this.getClass().toString(), "Error while checking db");
}
//Андроид не любит утечки ресурсов, все должно закрываться
if (checkDb != null) {
checkDb.close();
}
return checkDb != null;
}
//Метод копирования базы
private void copyDataBase() throws IOException {
// Открываем поток для чтения из уже созданной нами БД
//источник в assets
InputStream externalDbStream = context.getAssets().open(DB_NAME);
// Путь к уже созданной пустой базе в андроиде
String outFileName = DB_PATH + DB_NAME;
// Теперь создадим поток для записи в эту БД побайтно
OutputStream localDbStream = new FileOutputStream(outFileName);
// Собственно, копирование
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = externalDbStream.read(buffer)) > 0) {
localDbStream.write(buffer, 0, bytesRead);
}
// Мы будем хорошими и закроем потоки
localDbStream.close();
externalDbStream.close();
}
public SQLiteDatabase openDataBase() throws SQLException {
String path = DB_PATH + DB_NAME;
if (database == null) {
createDataBase();
database = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READWRITE);
}
return database;
}
@Override
public synchronized void close() {
if (database != null) {
database.close();
}
super.close();
}
@Override
public void onCreate(SQLiteDatabase db) {}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}
Код: Выделить всё
import java.util.ArrayList;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import diplom.proba2.bdhelper.ExternalDbOpenHelper;
public class ActivityTable extends ListActivity {
private static final String DB_NAME = "mybd.sqlite3";
//Хорошей практикой является задание имен полей БД константами
private static final String TABLE_NAME = "kalor";
private static final String PROD_ID = "_id";
private static final String PROD_NAME = "name";
private static final String PROD_BEL = "bel";
private SQLiteDatabase database;
private ListView listView;
private ArrayList kalor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ras_table);
//Наш ключевой хелпер
ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME);
database = dbOpenHelper.openDataBase();
//Все, база открыта!
fillFreinds();
setUpList();
}
private void setUpList() {
//Испльзуем стандартный адаптер и layout элемента для краткости
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, kalor));
listView = getListView();
}
//Извлечение элементов из базы данных
private void fillFreinds() {
kalor = new ArrayList<String>();
Cursor prodCursor = database.query(TABLE_NAME, new String[] {PROD_ID, PROD_NAME},
null, null,null,null, PROD_NAME);
prodCursor.moveToFirst();
if(!prodCursor.isAfterLast()) {
do {
String name = prodCursor.getString(1);
kalor.add(name);
} while (prodCursor.moveToNext());
}
prodCursor.close();
}
}
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</ListView>
</LinearLayout>
Re: Урок 57. GridView и его атрибуты
гридвью вообще редко используется. Листвью гораздо удобнее для этих целей.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 57. GridView и его атрибуты
Ну на сколько я понял, с листвью не получится таблицу сделать, а она то мне и нужна(Foenix писал(а):гридвью вообще редко используется. Листвью гораздо удобнее для этих целей.
Re: Урок 57. GridView и его атрибуты
ребят, вопрос может не туда, но про GridLayout ничего здесь не нашол.
Вопрос в следующем, как программно менять ширину/высоту кнопок в Gridlayout'e.
gridLayoutsParams().width = 10; - выдает ошибку
Вопрос в следующем, как программно менять ширину/высоту кнопок в Gridlayout'e.
gridLayoutsParams().width = 10; - выдает ошибку
Re: Урок 57. GridView и его атрибуты
Всем привет. Подскажите, пожалуйста, как реализовать переход к следующему элементу в GridView. Необходимо при нажатии на один элемент, закрасить его и следующий элемент.
Re: Урок 57. GridView и его атрибуты
get item at position ( position + 1 ) под айтемом в идеале подразумевается кастомный класс-контейнер с одним из полей int color для цвета.Sanek517s писал(а):Всем привет. Подскажите, пожалуйста, как реализовать переход к следующему элементу в GridView. Необходимо при нажатии на один элемент, закрасить его и следующий элемент.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 57. GridView и его атрибуты
Можно пример на коде? Я использовал get item at position но я смог только получить другое значение. Я все так же не могу взаимодействовать с другими элементами grid при нажатии на один из его элементовdoter.ua писал(а):get item at position ( position + 1 ) под айтемом в идеале подразумевается кастомный класс-контейнер с одним из полей int color для цвета.Sanek517s писал(а):Всем привет. Подскажите, пожалуйста, как реализовать переход к следующему элементу в GridView. Необходимо при нажатии на один элемент, закрасить его и следующий элемент.
Re: Урок 57. GridView и его атрибуты
Насколько мне известно - нет.kifir писал(а):Здравствуйте! А можно ли задать фиксированную ширину для первой ячейки одну, а для остальных другую?
Кто знает, как перерисовать (обновить) GridView?
Re: Урок 57. GridView и его атрибуты
Хотел спросить, столкнулся с такой проблемой, есть грид, по нажатию на любой итем вызывается диалоговое окно для ввода значений (которое внесется в эту часть грида), после ввода значений я переприменяю адаптер, и как не странно, он скидывает его в самое начало, это в принципе логично, так как он его перерисовует, но может кто знает, есть ли какой то метод что бы он не скидывал меня в начало ? Grid.setSelection(position); пробовал таким способом, запоминаю какой итем последний виден на экране и потом просто заставляю сместится к нему, но все равно не всегда корректно работает. За помощь буду благодарен, если нужны какие то части кода, пишите. А если я где то не дочитал и этот вопрос расскрывался, прошу простить.
Re: Урок 57. GridView и его атрибуты
Как получить доступ к элементам gridview из кода? - например получить количество элементов или какой то конкретный элемент , пробовал использовать getChildCount() , но вылетает Resource not found
Re: Урок 57. GridView и его атрибуты
Всем привет!Не подскажите как при касании ячейки, сменить текст внутри этой ячейке?