android listview 预加载动画,Android - 使用预加载的数据库填充ListView
我想使用我已经使用SQLite数据库浏览器创建的预加载数据库来填充listview。但是,我不断收紧。对于DatabaseHelper类,我精确地在http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/上跟随了教程
这里是我的代码显示listView:
public class POITab extends ListActivity {
private SQLiteDatabase newDb;
protected Cursor cursor;
protected ListAdapter adapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
openDatabase();
}
private void openDatabase() {
POIHelper dbHelper = new POIHelper(this.getApplicationContext());
newDb = dbHelper.getWritableDatabase();
cursor = newDb.rawQuery("SELECT _id, Name FROM POI", null);
adapter = new SimpleCursorAdapter(this, R.layout.listitem, cursor, new String[] {"Name"}, new int[] {R.id.name});
setListAdapter(adapter);
}
@Override
public void onListItemClick(ListView parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}更新:我不知道,但我想问题在于线
cursor = newDb.rawQuery("SELECT _id, Name FROM POI", null);这是我的databaseHelper类的代码:
public class POIHelper extends SQLiteOpenHelper {
private static String DB_PATH = "/data/data/com.test.mysgapp/databases/";
private static String DB_NAME = "MySgAppdb";
private SQLiteDatabase myDatabase;
private final Context myContext;
public POIHelper(Context context) {
super(context, DB_NAME, null, 1);
this.myContext = context;
}
public void createDatabase() throws IOException {
boolean dbExist = checkDatabase();
if(dbExist) {
} else {
this.getReadableDatabase();
try {
copyDatabase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkDatabase() {
SQLiteDatabase checkDb = null;
try {
String myPath = DB_PATH + DB_NAME;
checkDb = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
}
if(checkDb != null) {
checkDb.close();
}
return checkDb != null ? true : false;
}
private void copyDatabase() throws IOException{
InputStream input = myContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream output = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = input.read(buffer))>0) {
output.write(buffer, 0, length);
}
output.flush();
output.close();
input.close();
}
public void openDatabase() throws IOException {
String path = DB_PATH + DB_NAME;
myDatabase = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
}
@Override
public synchronized void close() {
if (myDatabase != null)
myDatabase.close();
super.close();
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}}
错误日志:
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): FATAL EXCEPTION: main
01-10 16:11:52.332: ERROR/AndroidRuntime(1311):
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.test.mysgapp/com.test.mysgapp.POITab}:
android.database.sqlite.SQLiteException: no such table: Places: ,
while compiling: SELECT _id, Name FROM Places 01-10 16:11:52.332:
ERROR/AndroidRuntime(1311): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.app.ActivityThread.startActivityNow(ActivityThread.java:2503)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:651)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.widget.TabHost.setCurrentTab(TabHost.java:323) 01-10
16:11:52.332: ERROR/AndroidRuntime(1311): at
android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:129) 01-10
16:11:52.332: ERROR/AndroidRuntime(1311): at
android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:453)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.view.View.performClick(View.java:2408) 01-10 16:11:52.332:
ERROR/AndroidRuntime(1311): at
android.view.View$PerformClick.run(View.java:8816) 01-10 16:11:52.332:
ERROR/AndroidRuntime(1311): at
android.os.Handler.handleCallback(Handler.java:587) 01-10
16:11:52.332: ERROR/AndroidRuntime(1311): at
android.os.Handler.dispatchMessage(Handler.java:92) 01-10
16:11:52.332: ERROR/AndroidRuntime(1311): at
android.os.Looper.loop(Looper.java:123) 01-10 16:11:52.332:
ERROR/AndroidRuntime(1311): at
android.app.ActivityThread.main(ActivityThread.java:4627) 01-10
16:11:52.332: ERROR/AndroidRuntime(1311): at
java.lang.reflect.Method.invokeNative(Native Method) 01-10
16:11:52.332: ERROR/AndroidRuntime(1311): at
java.lang.reflect.Method.invoke(Method.java:521) 01-10 16:11:52.332:
ERROR/AndroidRuntime(1311): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 01-10
16:11:52.332: ERROR/AndroidRuntime(1311): at
dalvik.system.NativeStart.main(Native Method) 01-10 16:11:52.332:
ERROR/AndroidRuntime(1311): Caused by:
android.database.sqlite.SQLiteException: no such table: Places: ,
while compiling: SELECT _id, Name FROM Places 01-10 16:11:52.332:
ERROR/AndroidRuntime(1311): at
android.database.sqlite.SQLiteCompiledSql.native_compile(Native
Method) 01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:64)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:80)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:46) 01-10
16:11:52.332: ERROR/AndroidRuntime(1311): at
android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1315)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
com.test.mysgapp.POITab.openDb(POITab.java:42) 01-10 16:11:52.332:
ERROR/AndroidRuntime(1311): at
com.test.mysgapp.POITab.onCreate(POITab.java:36) 01-10 16:11:52.332:
ERROR/AndroidRuntime(1311): at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-10 16:11:52.332: ERROR/AndroidRuntime(1311): ... 18 more 01-10
16:11:52.392: WARN/ActivityManager(41): Force finishing activity
com.test.mysgapp/.MySgApp
android listview 预加载动画,Android - 使用预加载的数据库填充ListView相关推荐
- html如何添加加载动画效果,CSS3创建加载动画效果
加载动画在网页设计中是很常见的.用户们都希望网页加载又快又流畅而不是盯着屏幕苦等,而加载动画能够在内容加载完成前给用户视觉反馈,从而能够吸引用户而不让他们直接放弃继续浏览你的网站. 创建加载效果所需的 ...
- android 仿qq录音动画,Android实现QQ点赞效果动画 Android动画
版权声明:本文为代码部落原创文章,转载请注明出处. 前言 点赞是现在社交app中比较常用的功能,一个小小的点赞按钮如果能加上一些有趣动画,一来告诉用户你已经点了赞(这是对一些手残党极大的福音),二来人 ...
- android listview预加载动画,Android开发Activity页面预加载
概述 某些业务场景下,为了提高用户体验,我们可能需要在前一个页面就将下一个页面的数据准备好,减少用户后续操作的时间.因为Activity在设计上采用了低耦合,高度的隔离使得传统的预加载Activity ...
- android listview下拉刷新动画,android 安卓 listview 支持下拉刷新 上拉加载更多
[1]重写listViewimport java.text.SimpleDateFormat; import java.util.Date; import com.example.testdddlea ...
- android图标随着进度条动画,Android开发之ProgressBar字体随着进度条的加载而滚动...
在网上翻阅了很多关于ProgressBar滚动效果,但是始终没有找到适合项目中的这种效果,故自己写这篇文章,记录一下写作过程,给大家做一个参考.先看下最终效果效果图 我这里用的是LICEcap软件录制 ...
- android svga加载动画,android svga使用
首先在项目的build.gradle中加入allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 然后在app下 ...
- android 今日头条加载动画,Android 仿今日头条简单的刷新效果实例代码
点击按钮,先自动进行下拉刷新,也可以手动刷新,刷新完后,最后就多一行数据.有四个选项卡. 前两天导师要求做一个给本科学生预定机房座位的app,出发点来自这里.做着做着遇到很多问题,都解决了.这个效果感 ...
- android 悬浮窗的显示动画,android 悬浮窗特效
最近在开发项目的时候需要做一个悬浮层的动画,类似于支付宝掉钱动画.但是区别在于,需求是浮出一个窗口,之后边缩放边位移至屏幕右下角标签处.效果图如下: 一开始考虑用自定义View来做.后来发现开线程让其 ...
- css 加载动画如何生效,CSS 加载动画
CSS加载动画 实现加载动画效果,需要的两个关键步骤: 1.做出环形外观 border:16px solid #f3f3f3; border-radius:50%; border-top:16px s ...
最新文章
- Java - 框架之 SpringBoot 攻略day01
- CF888G Xor-MST (01字典树+MST)
- 提高工作效率,请收下这8个神器
- 独家 | 图解BiDAF中的单词嵌入、字符嵌入和上下文嵌入(附链接)
- 等概率随机函数的实现
- rk4.0系统鼠标图标更换
- python读写csv与数据库性能_使用python将csv文件写入SQL Server数据库
- 答复达内同学 2007-08-11
- 51单片机(At89C51)组成,引脚介绍
- 怎么用计算机程序求根公式,一元四次方程求根公式
- 货效,坪效,人效,这三效怎么理解?
- 2022-04-13 Ambient Light Proximity Sensor 光感和距离传感器 STK3311X调试记录 RK3566 Android11平台
- 【设计】工业设计公司设计师的原则
- 08-CSS属性:定位属性
- mysql 查询字母集合_使用MySQL查询查找所有以字母“ a”,“ b”或“ c”开头的名称?...
- 产品管理(Product Management)
- 错误: Unknown class XXX in Interface Builder file
- 当谈论机器学习中的公平公正时,我们该谈论些什么?
- R语言如何绘制词云图(17)
- iptables 窥探、扫盲