相关疑难解决方法(0)

如何安全地关闭光标和数据库?

我使用Cursor从数据库中获取记录.这是完美的工作.但是,当我使用这段代码时,我在Logcat中遇到了一些错误

public Cursor fetchAll()
{
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query(t1, new String[] {"_id",name, date, prior, time, dateformat}, null, null, null, null, prior); 
    return cursor;
}
Run Code Online (Sandbox Code Playgroud)

我的logcat是 -

12-16 14:49:20.774: E/Database(18611): close() was never explicitly called on database '/data/data/com.android.application/databases/appZ.db' 
12-16 14:49:20.774: E/Database(18611): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
12-16 14:49:20.774: E/Database(18611):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1810)
12-16 14:49:20.774: E/Database(18611):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
12-16 14:49:20.774: E/Database(18611):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
12-16 14:49:20.774: E/Database(18611):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
12-16 14:49:20.774: …
Run Code Online (Sandbox Code Playgroud)

database android cursor

9
推荐指数
1
解决办法
2万
查看次数

Android从AsyncTask调用notifyDataSetChanged

我有一个自定义ListAdapter,它在AsyncTask中从Internet获取数据.

数据完全添加到列表中,但是当我尝试执行操作时,应用程序崩溃了......

我确定这是因为我正在调用notifyDataSetChanged(); 在错误的时间(即在AsyncTask结束之前).

我现在得到了什么:

public class MyListAdapter extends BaseAdapter {
    private ArrayList<String> mStrings = new ArrayList<String>();

    public MyListAdapter() {
        new RetreiveStringsTask().execute(internet_url);
        //here I call the notify function ****************
        this.notifyDataSetChanged();
    }

    class RetreiveStringsTask extends AsyncTask<String, Void, ArrayList<String>> {
        private Exception exception;

        @Override
        protected ArrayList<String> doInBackground(String... urls) {
            try {
                URL url= new URL(urls[0]);
                //return arraylist
                return getStringsFromInternet(url);;
            } catch (Exception e) {
                this.exception = e;
                Log.e("AsyncTask", exception.toString());
                return null;
            }
        }

        @Override
        protected void onPostExecute(ArrayList<String> stringsArray) {
            //add the tours …
Run Code Online (Sandbox Code Playgroud)

java android listadapter android-asynctask baseadapter

0
推荐指数
1
解决办法
9275
查看次数