时间:2021-07-01 10:21:17 帮助过:20人阅读
2.2、GVTable.java
- <span style="color: #0000ff">package</span><span style="color: #000000"> com.testSQLite;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.ArrayList;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.HashMap;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> android.content.Context;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> android.database.Cursor;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> android.database.sqlite.SQLiteDatabase;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> android.util.Log;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> android.view.View;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> android.widget.AdapterView;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> android.widget.GridView;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> android.widget.LinearLayout;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> android.widget.SimpleAdapter;
- </span><span style="color: #0000ff">import</span><span style="color: #000000"> android.widget.AdapterView.OnItemClickListener;
- </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> GVTable <span style="color: #0000ff">extends</span><span style="color: #000000"> LinearLayout
- {
- </span><span style="color: #0000ff">protected</span><span style="color: #000000"> GridView gvTable,gvPage;
- </span><span style="color: #0000ff">protected</span> SimpleAdapter saPageID,saTable;<span style="color: #008000">//</span><span style="color: #008000"> 适配器</span>
- <span style="color: #0000ff">protected</span> ArrayList<HashMap<String, String>> alistPageID, alistTable;<span style="color: #008000">//</span><span style="color: #008000"> 数据源</span>
- <span style="color: #0000ff">protected</span> <span style="color: #0000ff">int</span> TableRowCount = 10;<span style="color: #008000">//</span><span style="color: #008000">分页时,每页的Row总数</span>
- <span style="color: #0000ff">protected</span> <span style="color: #0000ff">int</span> TableColCount = 0;<span style="color: #008000">//</span><span style="color: #008000">每页col的数量</span>
- <span style="color: #0000ff">protected</span><span style="color: #000000"> SQLiteDatabase db;
- </span><span style="color: #0000ff">protected</span> String rawSQL = ""<span style="color: #000000">;
- </span><span style="color: #0000ff">protected</span> Cursor curTable;<span style="color: #008000">//</span><span style="color: #008000">分页时使用的Cursor</span>
- <span style="color: #0000ff">protected</span> OnTableClickListener clickListener;<span style="color: #008000">//</span><span style="color: #008000">整个分页控件被点击时的回调函数</span>
- <span style="color: #0000ff">protected</span> OnPageSwitchListener switchListener;<span style="color: #008000">//</span><span style="color: #008000">分页切换时的回调函数</span>
- <span style="color: #0000ff">public</span><span style="color: #000000"> GVTable(Context context)
- {
- </span><span style="color: #0000ff">super</span><span style="color: #000000">(context);
- </span><span style="color: #0000ff">this</span>.setOrientation(VERTICAL);<span style="color: #008000">//</span><span style="color: #008000">垂直
- </span><span style="color: #008000">//</span><span style="color: #008000">----------------------------------------</span>
- gvTable = <span style="color: #0000ff">new</span><span style="color: #000000"> GridView(context);
- </span><span style="color: #008000">//</span><span style="color: #008000"> addView(gvTable, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));</span><span style="color: #008000">//</span><span style="color: #008000">宽长式样</span>
- addView(gvTable, <span style="color: #0000ff">new</span> LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));<span style="color: #008000">//</span><span style="color: #008000">宽长式样</span>
- <span style="color: #000000">
- alistTable </span>= <span style="color: #0000ff">new</span> ArrayList<HashMap<String, String>><span style="color: #000000">();
- saTable </span>= <span style="color: #0000ff">new</span><span style="color: #000000"> SimpleAdapter(context,
- alistTable,</span><span style="color: #008000">//</span><span style="color: #008000"> 数据来源</span>
- R.layout.items,<span style="color: #008000">//</span><span style="color: #008000">XML实现</span>
- <span style="color: #0000ff">new</span> String[] { "ItemText" },<span style="color: #008000">//</span><span style="color: #008000"> 动态数组与ImageItem对应的子项</span>
- <span style="color: #0000ff">new</span> <span style="color: #0000ff">int</span><span style="color: #000000">[] { R.id.ItemText });
- </span><span style="color: #008000">//</span><span style="color: #008000"> 添加并且显示</span>
- <span style="color: #000000"> gvTable.setAdapter(saTable);
- gvTable.setOnItemClickListener(</span><span style="color: #0000ff">new</span><span style="color: #000000"> OnItemClickListener()
- {
- @Override
- </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> onItemClick(AdapterView<?> _parent, View _view, <span style="color: #0000ff">int</span> _position, <span style="color: #0000ff">long</span><span style="color: #000000"> _id)
- {
- </span><span style="color: #0000ff">int</span> y = _position / curTable.getColumnCount() - 1;<span style="color: #008000">//</span><span style="color: #008000">标题栏的不算</span>
- <span style="color: #0000ff">int</span> x = _position %<span style="color: #000000"> curTable.getColumnCount();
- </span><span style="color: #0000ff">if</span> (clickListener != <span style="color: #0000ff">null</span><span style="color: #008000">//</span><span style="color: #008000">分页数据被点击</span>
- && y!=-1)<span style="color: #008000">//</span><span style="color: #008000">点中的不是标题栏时</span>
- <span style="color: #000000"> {
- clickListener.onTableClickListener(x,y,curTable);
- }
- }
- });
- </span><span style="color: #008000">//</span><span style="color: #008000">----------------------------------------</span>
- gvPage = <span style="color: #0000ff">new</span><span style="color: #000000"> GridView(context);
- gvPage.setColumnWidth(</span>40);<span style="color: #008000">//</span><span style="color: #008000">设置每个分页按钮的宽度</span>
- gvPage.setNumColumns(GridView.AUTO_FIT);<span style="color: #008000">//</span><span style="color: #008000">分页按钮数量自动设置
- </span><span style="color: #008000">//</span><span style="color: #008000"> addView(gvPage, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));</span><span style="color: #008000">//</span><span style="color: #008000">宽长式样</span>
- addView(gvPage, <span style="color: #0000ff">new</span> LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));<span style="color: #008000">//</span><span style="color: #008000">宽长式样</span>
- alistPageID = <span style="color: #0000ff">new</span> ArrayList<HashMap<String, String>><span style="color: #000000">();
- saPageID </span>= <span style="color: #0000ff">new</span><span style="color: #000000"> SimpleAdapter(context,
- alistPageID,</span><span style="color: #008000">//</span><span style="color: #008000"> 数据来源</span>
- R.layout.items,<span style="color: #008000">//</span><span style="color: #008000">XML实现</span>
- <span style="color: #0000ff">new</span> String[] { "ItemText" },<span style="color: #008000">//</span><span style="color: #008000"> 动态数组与ImageItem对应的子项</span>
- <span style="color: #0000ff">new</span> <span style="color: #0000ff">int</span><span style="color: #000000">[] { R.id.ItemText });
- </span><span style="color: #008000">//</span><span style="color: #008000"> 添加并且显示</span>
- <span style="color: #000000"> gvPage.setAdapter(saPageID);
- </span><span style="color: #008000">//</span><span style="color: #008000"> 添加消息处理</span>
- gvPage.setOnItemClickListener(<span style="color: #0000ff">new</span><span style="color: #000000"> OnItemClickListener()
- {
- @Override
- </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> onItemClick(AdapterView<?> _parent, View _view, <span style="color: #0000ff">int</span> _position, <span style="color: #0000ff">long</span><span style="color: #000000"> _id)
- {
- LoadTable(_position);</span><span style="color: #008000">//</span><span style="color: #008000">根据所选分页读取对应的数据</span>
- <span style="color: #0000ff">if</span>(switchListener!=<span style="color: #0000ff">null</span>)<span style="color: #008000">//</span><span style="color: #008000">分页切换时</span>
- <span style="color: #000000"> {
- switchListener.onPageSwitchListener(_position, alistPageID.size());
- }
- }
- });
- }
- </span><span style="color: #008000">/**</span><span style="color: #008000">
- * 清除所有数据
- </span><span style="color: #008000">*/</span>
- <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> gvRemoveAll()
- {
- </span><span style="color: #0000ff">if</span>(<span style="color: #0000ff">this</span>.curTable!=<span style="color: #0000ff">null</span><span style="color: #000000">)
- curTable.close();
- alistTable.clear();
- saTable.notifyDataSetChanged();
- alistPageID.clear();
- saPageID.notifyDataSetChanged();
- }
- </span><span style="color: #008000">/**</span><span style="color: #008000">
- * 读取指定ID的分页数据,返回当前页的总数据
- * SQL:Select * From TABLE_NAME Limit 9 Offset 10;
- * 表示从TABLE_NAME表获取数据,跳过10行,取9行
- * </span><span style="color: #808080">@param</span><span style="color: #008000"> pageID 指定的分页ID
- </span><span style="color: #008000">*/</span>
- <span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> LoadTable(<span style="color: #0000ff">int</span><span style="color: #000000"> pageID)
- {
- </span><span style="color: #0000ff">if</span>(curTable!=<span style="color: #0000ff">null</span>)<span style="color: #008000">//</span><span style="color: #008000">释放上次的数据</span>
- <span style="color: #000000"> curTable.close();
- String sql</span>= rawSQL+" Limit "+String.valueOf(TableRowCount)+ " Offset " +String.valueOf(pageID*<span style="color: #000000">TableRowCount);
- Log.e(</span>"sql"<span style="color: #000000">, sql);
- curTable </span>= db.rawQuery(sql, <span style="color: #0000ff">null</span><span style="color: #000000">);
- gvTable.setNumColumns(curTable.getColumnCount());</span><span style="color: #008000">//</span><span style="color: #008000">表现为表格的关键点!</span>
- TableColCount=<span style="color: #000000">curTable.getColumnCount();
- alistTable.clear();
- </span><span style="color: #008000">//</span><span style="color: #008000"> 取得字段名称</span>
- <span style="color: #0000ff">int</span> colCount =<span style="color: #000000"> curTable.getColumnCount();
- </span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i < colCount; i++<span style="color: #000000">)
- {
- HashMap</span><String, String> map = <span style="color: #0000ff">new</span> HashMap<String, String><span style="color: #000000">();
- map.put(</span>"ItemText"<span style="color: #000000">, curTable.getColumnName(i));
- alistTable.add(map);
- }
- </span><span style="color: #008000">//</span><span style="color: #008000"> 列举出所有数据</span>
- <span style="color: #0000ff">int</span> recCount=<span style="color: #000000">curTable.getCount();
- </span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i < recCount; i++) <span style="color: #008000">//</span><span style="color: #008000">定位到一条数据</span>
- <span style="color: #000000"> {
- curTable.moveToPosition(i);
- </span><span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> ii=0;ii<colCount;ii++)<span style="color: #008000">//</span><span style="color: #008000">定位到一条数据中的每个字段</span>
- <span style="color: #000000"> {
- HashMap</span><String, String> map = <span style="color: #0000ff">new</span> HashMap<String, String><span style="color: #000000">();
- map.put(</span>"ItemText"<span style="color: #000000">, curTable.getString(ii));
- alistTable.add(map);
- }
- }
- saTable.notifyDataSetChanged();
- }
- </span><span style="color: #008000">/**</span><span style="color: #008000">
- * 设置表格的最多显示的行数
- * </span><span style="color: #808080">@param</span><span style="color: #008000"> row 表格的行数
- </span><span style="color: #008000">*/</span>
- <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> gvSetTableRowCount(<span style="color: #0000ff">int</span><span style="color: #000000"> row)
- {
- TableRowCount</span>=<span style="color: #000000">row;
- }
- </span><span style="color: #008000">/**</span><span style="color: #008000">
- * 取得表格的最大行数
- * </span><span style="color: #808080">@return</span><span style="color: #008000"> 行数
- </span><span style="color: #008000">*/</span>
- <span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> gvGetTableRowCount()
- {
- </span><span style="color: #0000ff">return</span><span style="color: #000000"> TableRowCount;
- }
- </span><span style="color: #008000">/**</span><span style="color: #008000">
- * 取得当前分页的Cursor
- * </span><span style="color: #808080">@return</span><span style="color: #008000"> 当前分页的Cursor
- </span><span style="color: #008000">*/</span>
- <span style="color: #0000ff">public</span><span style="color: #000000"> Cursor gvGetCurrentTable()
- {
- </span><span style="color: #0000ff">return</span><span style="color: #000000"> curTable;
- }
- </span><span style="color: #008000">/**</span><span style="color: #008000">
- * 准备分页显示数据
- * </span><span style="color: #808080">@param</span><span style="color: #008000"> rawSQL sql语句
- * </span><span style="color: #808080">@param</span><span style="color: #008000"> db 数据库
- </span><span style="color: #008000">*/</span>
- <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> gvReadyTable(String rawSQL,SQLiteDatabase db)
- {
- </span><span style="color: #0000ff">this</span>.rawSQL =<span style="color: #000000"> rawSQL;
- </span><span style="color: #0000ff">this</span>.db =<span style="color: #000000"> db;
- }
- </span><span style="color: #008000">/**</span><span style="color: #008000">
- * 刷新分页栏,更新按钮数量
- * </span><span style="color: #808080">@param</span><span style="color: #008000"> sql SQL语句
- * </span><span style="color: #808080">@param</span><span style="color: #008000"> db 数据库
- </span><span style="color: #008000">*/</span>
- <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> gvUpdatePageBar(String sql, SQLiteDatabase _db)
- {
- Cursor rec </span>= _db.rawQuery(sql, <span style="color: #0000ff">null</span><span style="color: #000000">);
- rec.moveToLast();
- </span><span style="color: #0000ff">long</span> recSize = rec.getLong(0);<span style="color: #008000">//</span><span style="color: #008000">取得总数</span>
- <span style="color: #000000"> rec.close();
- </span><span style="color: #0000ff">int</span> pageNum = (<span style="color: #0000ff">int</span>)(recSize/TableRowCount) + 1;<span style="color: #008000">//</span><span style="color: #008000">取得分页数</span>
- <span style="color: #000000">
- alistPageID.clear();
- </span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i < pageNum; i++<span style="color: #000000">)
- {
- HashMap</span><String, String> map = <span style="color: #0000ff">new</span> HashMap<String, String><span style="color: #000000">();
- map.put(</span>"ItemText", "No." + String.valueOf(i));<span style="color: #008000">//</span><span style="color: #008000"> 添加图像资源的ID</span>
- <span style="color: #000000">
- alistPageID.add(map);
- }
- saPageID.notifyDataSetChanged();
- }
- </span><span style="color: #008000">//</span><span style="color: #008000">---------------------------------------------------------</span>
- <span style="color: #008000">/**</span><span style="color: #008000">
- * 表格被点击时的回调函数
- </span><span style="color: #008000">*/</span>
- <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setTableOnClickListener(OnTableClickListener click)
- {
- </span><span style="color: #0000ff">this</span>.clickListener =<span style="color: #000000"> click;
- }
- </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">interface</span><span style="color: #000000"> OnTableClickListener
- {
- </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> onTableClickListener(<span style="color: #0000ff">int</span> x,<span style="color: #0000ff">int</span><span style="color: #000000"> y,Cursor c);
- }
- </span><span style="color: #008000">//</span><span style="color: #008000">---------------------------------------------------------</span>
- <span style="color: #008000">/**</span><span style="color: #008000">
- * 分页栏被点击时的回调函数
- </span><span style="color: #008000">*/</span>
- <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setOnPageSwitchListener(OnPageSwitchListener pageSwitch)
- {
- </span><span style="color: #0000ff">this</span>.switchListener =<span style="color: #000000"> pageSwitch;
- }
- </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">interface</span><span style="color: #000000"> OnPageSwitchListener
- {
- </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> onPageSwitchListener(<span style="color: #0000ff">int</span> pageID,<span style="color: #0000ff">int</span><span style="color: #000000"> pageCount);
- }
- }</span>
2.3、main.xml
- <span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="utf-8"</span><span style="color: #0000ff">?></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">LinearLayout </span><span style="color: #ff0000">xmlns:android</span><span style="color: #0000ff">="http://schemas.android.com/apk/res/android"</span><span style="color: #ff0000">
- android:orientation</span><span style="color: #0000ff">="vertical"</span><span style="color: #ff0000"> android:layout_width</span><span style="color: #0000ff">="fill_parent"</span><span style="color: #ff0000">
- android:layout_height</span><span style="color: #0000ff">="fill_parent"</span><span style="color: #ff0000"> android:id</span><span style="color: #0000ff">="@+id/MainLinearLayout"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">Button
- </span><span style="color: #ff0000">android:layout_height</span><span style="color: #0000ff">="wrap_content"</span><span style="color: #ff0000">
- android:layout_width</span><span style="color: #0000ff">="fill_parent"</span><span style="color: #ff0000">
- android:id</span><span style="color: #0000ff">="@+id/btnCreateDB"</span><span style="color: #ff0000">
- android:text</span><span style="color: #0000ff">="创建数据库"</span> <span style="color: #0000ff">/></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">Button
- </span><span style="color: #ff0000">android:layout_height</span><span style="color: #0000ff">="wrap_content"</span><span style="color: #ff0000">
- android:layout_width</span><span style="color: #0000ff">="fill_parent"</span><span style="color: #ff0000">
- android:text</span><span style="color: #0000ff">="插入一串实验数据"</span><span style="color: #ff0000">
- android:id</span><span style="color: #0000ff">="@+id/btnInsertRec"</span> <span style="color: #0000ff">/></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">Button
- </span><span style="color: #ff0000">android:layout_height</span><span style="color: #0000ff">="wrap_content"</span><span style="color: #ff0000">
- android:layout_width</span><span style="color: #0000ff">="fill_parent"</span><span style="color: #ff0000">
- android:id</span><span style="color: #0000ff">="@+id/btnClose"</span><span style="color: #ff0000">
- android:text</span><span style="color: #0000ff">="关闭数据库"</span> <span style="color: #0000ff">/></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">LinearLayout</span><span style="color: #0000ff">></span>
2.4、items.xml
- <span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="utf-8"</span><span style="color: #0000ff">?></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">LinearLayout </span><span style="color: #ff0000">android:id</span><span style="color: #0000ff">="@+id/LinearLayout01"</span><span style="color: #ff0000">
- xmlns:android</span><span style="color: #0000ff">="http://schemas.android.com/apk/res/android"</span><span style="color: #ff0000">
- android:layout_width</span><span style="color: #0000ff">="fill_parent"</span><span style="color: #ff0000"> android:background</span><span style="color: #0000ff">="#555555"</span><span style="color: #ff0000">
- android:layout_height</span><span style="color: #0000ff">="wrap_content"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">TextView
- </span><span style="color: #ff0000">android:layout_below</span><span style="color: #0000ff">="@+id/ItemImage"</span><span style="color: #ff0000">
- android:text</span><span style="color: #0000ff">="TextView01"</span><span style="color: #ff0000">
- android:id</span><span style="color: #0000ff">="@+id/ItemText"</span><span style="color: #ff0000">
- android:bufferType</span><span style="color: #0000ff">="normal"</span><span style="color: #ff0000">
- android:singleLine</span><span style="color: #0000ff">="true"</span><span style="color: #ff0000">
- android:background</span><span style="color: #0000ff">="#000000"</span><span style="color: #ff0000">
- android:layout_width</span><span style="color: #0000ff">="fill_parent"</span><span style="color: #ff0000">
- android:gravity</span><span style="color: #0000ff">="center"</span><span style="color: #ff0000">
- android:layout_margin</span><span style="color: #0000ff">="1dip"</span><span style="color: #ff0000">
- android:layout_gravity</span><span style="color: #0000ff">="center"</span><span style="color: #ff0000">
- android:layout_height</span><span style="color: #0000ff">="wrap_content"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">TextView</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">LinearLayout</span><span style="color: #0000ff">></span>
3、
4、
5、
SQlite.GridView
标签:ada listview 添加 文件的 sql语句 end near 绑定 span