Отладка баз данных SQLite на Android

При написании приложений под операционную систему Android, приходится часто использовать базы данных для хранения данных. Я уже показывал шаблон, для создания БД на телефоне, сейчас хочу рассказать про отладку баз данных SQLite в случае работы с Android.

В составе Android SDK есть инструмент, который называется ADB или Android Debug Bridge. Командная строка позволяет связываться с запущенным эмулятором или физическим устройством, на котором ведется отладка.

Читать далее

Кастомизация RadioButton в Android

Привет! Продолжая тему кастомизации элементов интерфейса Android хочу описать, как кастомизировать RadioButton.

Что бы создать кастомный стиль для RadioButton нужно создать drawable-ресурс, содержащий 4 иконки:

 Pressed  Checked
 True  True
 True  False
 False  True
 False  False

Поместите ваши изображения в res\drawable\ Далее нужно создать описание для этих ресурсов. Селектор.

Для этого нужно создать файл, например res\drawable\button_radio.xml в втором и будут описано, когда какую картинку размещать.

Пример:

1
2
3
4
5
6
7
8
9
10
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_checked="true" android:state_pressed="false"
      android:drawable="@drawable/radio_on"/>
  <item android:state_checked="false" android:state_pressed="false"
      android:drawable="@drawable/radio_off"/>
  <item android:state_checked="true" android:state_pressed="true"
      android:drawable="@drawable/radio_on_pressed"/>
  <item android:state_checked="false" android:state_pressed="true"
      android:drawable="@drawable/radio_off_pressed"/>
</selector>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_checked="true" android:state_pressed="false"
      android:drawable="@drawable/radio_on"/>
  <item android:state_checked="false" android:state_pressed="false"
      android:drawable="@drawable/radio_off"/>
  <item android:state_checked="true" android:state_pressed="true"
      android:drawable="@drawable/radio_on_pressed"/>
  <item android:state_checked="false" android:state_pressed="true"
      android:drawable="@drawable/radio_off_pressed"/>
</selector>

Подключить его из разметки можно при помощи следующей строки:

1
android:button="@drawable/button_radio"
android:button="@drawable/button_radio"

А из JAVA кода можно так:

1
2
RadioButton newRadioButton = new RadioButton(this);
newRadioButton.setButtonDrawable(R.drawable.radio_button);
RadioButton newRadioButton = new RadioButton(this);
newRadioButton.setButtonDrawable(R.drawable.radio_button);

В коде выше описаны не все атрибуты.

Кастомизация ProgressBar в Android

С чего же начать… Это еще одна статья, как сделать что-то в Android’е так, что бы было не стандартно или даже красиво :)

Я показывал (достаточно кратко) как кастомизировать кнопки и сделать свой ListView, теперь настало время рассказать как изменить внешний вид ProgressBar.

Читать далее

Android: Кастомизация кнопок (image)

Привет!

С чего же начать такой пост? Начнем так, в Android есть стандартные кнопки, но они в большинстве приложений они выглядят не уместно, поэтому существует механизм задания пользовательских стилей. Я знаю, о наличии двух путей кастомизации кнопок.

  • С использованием стандартных форм Shapes
  • С использованием изображений, которые накладываются на кнопку.

Сейчас я расскажу про второй способ, так как я столкнулся с проблемой — при использовании стандартных примитивов, невозможно создать составную форму, можно только выбрать из существующих форм, а они весьма ограниченны. Если нужно что-то более сложное — тогда только второй вариант, но мне кажется я слишком непонятное нечто пишу, так что к делу.

Читать далее

Заготовка для работы с SQLite в Android

Маленький шаблон, для работы с SQLite:

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
public class DBAdapter 
{
    private static final String DATABASE_NAME = "test";
    private static final int DATABASE_VERSION = 1;
 
    private final Context context;
    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;
 
    public DBAdapter(Context ctx)
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }
    private static class DatabaseHelper extends SQLiteOpenHelper
    {
        DatabaseHelper(Context context)
        {
            super(context,DATABASE_NAME, null, DATABASE_VERSION);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
 
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
 
        }
    }
    public SQLiteDatabase GetDataBaseOpen() throws SQLException
    {
        return this.db;
    }
    public DBAdapter Open() throws SQLiteException
    {
        db = DBHelper.getWritableDatabase();
        return this;
    }
    public DBAdapter OpenForRead() throws SQLiteException
    {
        db = DBHelper.getReadableDatabase();
        return this;
    }
    public void Close() 
    {
        DBHelper.close();
    }
}
public class DBAdapter 
{
	private static final String DATABASE_NAME = "test";
	private static final int DATABASE_VERSION = 1;

	private final Context context;
	private DatabaseHelper DBHelper;
	private SQLiteDatabase db;

	public DBAdapter(Context ctx)
	{
		this.context = ctx;
		DBHelper = new DatabaseHelper(context);
	}
	private static class DatabaseHelper extends SQLiteOpenHelper
	{
		DatabaseHelper(Context context)
		{
			super(context,DATABASE_NAME, null, DATABASE_VERSION);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub

		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// TODO Auto-generated method stub

		}
	}
	public SQLiteDatabase GetDataBaseOpen() throws SQLException
	{
		return this.db;
	}
	public DBAdapter Open() throws SQLiteException
	{
		db = DBHelper.getWritableDatabase();
		return this;
	}
	public DBAdapter OpenForRead() throws SQLiteException
	{
		db = DBHelper.getReadableDatabase();
		return this;
	}
	public void Close() 
	{
		DBHelper.close();
	}
}