
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдорд╛рдирдХ ListView рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВред
рд╕рдорд╕реНрдпрд╛
рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдорд╛рдирдХ рддрдВрддреНрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
- рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рд╕реВрдЪреА рджреГрд╢реНрдп рд╣реЛрддрд╛ рд╣реИ
- рд╕реВрдЪреА рджреГрд╢реНрдп CursorAdapter рдЙрджрд╛рд╣рд░рдг рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ
- CursorAdapter рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ Cursor рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
- Cursor ContentProvider рд╕реЗ рдпрд╛ SQLiteDatabase рд╕реЗ рддреБрд░рдВрдд рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛
рдЬрдм рддрдХ Cursor рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреА рд╣реЛрддреА рд╣реИ, рддрдм рддрдХ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЗрд╕рдореЗрдВ 50 рд╣рдЬрд╛рд░, 100 рд╣рдЬрд╛рд░ рдпрд╛ рдЕрдзрд┐рдХ рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ), рд╕реВрдЪреА рд╕рдордп-рд╕рдордп рдкрд░ рдзреАрдореА рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрд╣ рддреЗрдЬрд╝ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛрддрд╛ рд╣реИ, рдпрджрд┐ рд╕реВрдЪреА рджреГрд╢реНрдп рдореЗрдВ
рдлрд╛рд╕реНрдЯрд╕реНрдХреНрд░реЛрд▓ рдЗрдиреЗрдмрд▓реНрдб рдЧреБрдг рд╕рддреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рдЖрдЗрдП рд╣рдо рдХреЛрд╖реНрдардХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рд╕реВрдЪреА рджреГрд╢реНрдп рдореЗрдВ рд░рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдиреА рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рд╣рдо рдЗрд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдорд╛рдиреЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЯреНрд╡рд┐рдЯрд░ рдФрд░ "рдЕрдВрддрд╣реАрди рд╕реВрдЪрд┐рдпреЛрдВ" рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рдкреНрд░реАрд▓реЛрдбрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рднреА рд╕рдордЭреЗрдВрдЧреЗ, рдбреЗрдЯрд╛ рдХрд╛ рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред
рд╣рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИрдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рд╕рдордп рдПрдХ рд▓рд╛рдЦ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВ? рдЖрдЗрдП, рдмреНрд░реЗрдХ рдХреЗ рдХрд╛рд░рдг рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдХрд╛рд░рдг
рд╣рдо
ViewHolder рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ - рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдИ рднреА рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕рдХреНрд╖рдо рдПрдВрдбреНрд░реЙрдЗрдб-рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХрдЪрд░реЗ рдХреЗ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЗ рдЪреЗрд╣рд░реЗ рдкрд░ рдкреНрд░рддрд┐рд╢реЛрдз рдХреА рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ рдХреЗ
рдХрд╛рд░рдг рдЧреЗрдЯрд╡реНрдпреВ рдкрджреНрдзрддрд┐ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА
рдЕрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЪреБрдк рд░рд╣реВрдВрдЧрд╛ ред
рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдХрд░реНрд╕рд░ рдСрдкрд░реЗрд╢рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
SQLiteDatabase рд╕реЗ рдкреНрд░рд╛рдкреНрдд Cursor
SQLiteCursor рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ
AbstractWindowedCursor рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ
CursorWindow рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ рдореЗрдВ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реИред рдпрджрд┐ рдЖрдк
CursorWindow рдХреЗ
рд╕реНрд░реЛрддреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ , рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдПрдХ рдирд┐рд░рдВрддрд░ рдирд╛рдо com.android.internal.R.integer.config_cursorWindowSize рдирд╛рдо рд╕реЗ рд╕реАрдорд┐рдд рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЙрд╕ рд╕рдордп рдмрд┐рд▓реНрдХреБрд▓ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЦрд┐рдбрд╝рдХреА рдореЗрдВ рдЬрдЧрд╣ рдЦрддреНрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ (рди рдХреЗрд╡рд▓ рдЪрдпрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдмрд▓реНрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреА рд▓рдВрдмрд╛рдИ рднреА), рдФрд░ AbstractWindowedCursor рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд╡рд┐рдВрдбреЛ рдкрд░ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред
рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдмреБрд░рд╛ рдирд┐рд░реНрдгрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕реЗ рд╡рд┐рд▓рдВрдмрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рд╣рдо рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдирд╣реАрдВ рдмрдврд╝рд╛ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдореЗрдореЛрд░реА рд╕реАрдорд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рддреАрд╕рд░рд╛, рдпрд╣ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реИред
рд╣рдо рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗред
рдирд┐рд░реНрдгрдп
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, SQLite рдПрдХ рдХрд╛рдлреА рддреЗрдЬрд╝ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ "рдмреНрд░реЗрдХ" рдЗрд╕рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдкрд░ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ: рд╣рдо рдХреЗрд╡рд▓ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░, рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рд╢реЗрд╖ рдХреЙрд▓рдо рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
рдмреЗрд╕ рдПрдбреЗрдкреНрдЯрд░ рд╡рд░реНрдЧ рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрд╛ред
package me.ilich.fastscroll; import android.content.Context; import android.database.Cursor; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; public abstract class QuickAdapter extends BaseAdapter { private final DataSource mDataSource; private int mSize = 0; private Cursor mRowIds = null; private final Context mContext; public QuickAdapter(Context context, DataSource dataSource){ mDataSource = dataSource; mContext = context; doQuery(); } private void doQuery(){ if(mRowIds!=null){ mRowIds.close(); } mRowIds = mDataSource.getRowIds(); mSize = mRowIds.getCount(); } @Override public int getCount() { return mSize; } @Override public Object getItem(int position) { if(mRowIds.moveToPosition(position)){ long rowId = mRowIds.getLong(0); Cursor c = mDataSource.getRowById(rowId); return c; }else{ return null; } } @Override public long getItemId(int position) { if(mRowIds.moveToPosition(position)){ long rowId = mRowIds.getLong(0); return rowId; }else{ return 0; } } @Override public View getView(int position, View convertView, ViewGroup parent) { mRowIds.moveToPosition(position); long rowId = mRowIds.getLong(0); Cursor cursor = mDataSource.getRowById(rowId); cursor.moveToFirst(); View v; if (convertView == null) { v = newView(mContext, cursor, parent); } else { v = convertView; } bindView(v, mContext, cursor); cursor.close(); return v; } public abstract View newView(Context context, Cursor cursor, ViewGroup parent); public abstract void bindView(View view, Context context, Cursor cursor); public interface DataSource { Cursor getRowIds(); Cursor getRowById(long rowId); } }
рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ newView рдФрд░ bindView рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ CursorAdapter рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ QuickAdapter.DataSource рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рднреА рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦреЗрдВ:
class MyDataSource implements QuickAdapter.DataSource { @Override public Cursor getRowIds() { return mDatabase.rawQuery("SELECT rowid FROM table1", new String[]{}); } @Override public Cursor getRowById(long rowId) { return mDatabase.rawQuery("SELECT * FROM table1 WHERE rowid = ?", new String[]{Long.toString(rowId)}); } }
рдирд┐рд╖реНрдХрд░реНрд╖
рд╕реИрдорд╕рдВрдЧ рдЧреИрд▓реЗрдХреНрд╕реА рдЯреИрдм 10.1 рдкрд░, рдХрд┐рд╕реА рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмреНрд░реЗрдХ рдХреЗ рдмрд┐рдирд╛, "рддреНрд╡рд░рд┐рдд рд╕реНрдХреНрд░реЙрд▓" рдиреЗ 300 рд╣рдЬрд╛рд░ рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ 2Kb рддрдХ рдерд╛ред рдорд╛рдирдХ CursorAdapter рдзреАрдорд╛ рд╣реЛ рдЧрдпрд╛ рддрд╛рдХрд┐ рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рдбрд░рд╛рд╡рдирд╛ рд╣реЛред
CursorAdapter рдХреЗ рд▓рд┐рдП, GetView рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╡рд┐рд▓рдВрдм 553 рдПрдордПрд╕ рдерд╛, рдХреНрд╡рд┐рдХ рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП, рдпрд╣ 47 рдПрдордПрд╕ рдерд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдорд╛рдк рдХрд┐рдП рдЧрдП:
@Override public View getView(int arg0, View arg1, ViewGroup arg2) { long t1 = System.currentTimeMillis(); View result = super.getView(arg0, arg1, arg2); long t2 = System.currentTimeMillis(); long dt = t2-t1; if(dt>10){ Log.i("QuickAdapter", dt+""); } return result; }
рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рд╡рд┐рдЪрд╛рд░ рд▓реЗрдЦ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ,
рдЬреЛ рд╕реЗрд░реНрдЧреЗрдИ рд╕реНрд▓рд╛рд╡рд┐рди рджреНрд╡рд╛рд░рд╛ SQLite рдореЗрдВ рдЪрдпрдирд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ "рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░" рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ ред рдореИрдВ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧреА рджрд┐рдорд┐рддреНрд░реА рддреБрдЦрддрдорд╛рдиреЛрд╡ рдХреЛ рднреА рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдерд╛ред
рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рд╕реЗ рддрд╕реНрд╡реАрд░ рд▓реАред