使用的CursorAdapter填充的ListView [英] filling listview using cursoradapter

查看:138
本文介绍了使用的CursorAdapter填充的ListView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我实现了自定义光标适配器列表视图我。但列表视图总是空。
让我解释一下我的codeS:

  OfflineAdapter offlineadapter =新OfflineAdapter(CTX,NULL);
    listview.setAdapter(offlineadapter);

有什么真正的解释在这里。
搬进我的offlineadapter类:

 公共类OfflineAdapter扩展的CursorAdapter {    公共com.androidarabia.lazylist.ImageLoader ImageLoader的;    @燮pressWarnings(德precation)
    公共OfflineAdapter(上下文的背景下,光标C){
        超(背景下,C);        ImageLoader的=新com.androidarabia.lazylist.ImageLoader(
                context.getApplicationContext());

初​​始化...

 公开查看NewView的(上下文的背景下,光标光标的ViewGroup父){
    LayoutInflater吹气= LayoutInflater.from(背景);
    视图V = inflater.inflate(R.layout.pricelist,父母,假);
    bindView(ⅴ,上下文,光标);
    返回伏;

}

充气布局...

  @覆盖
公共无效bindView(视图V,上下文的背景下,光标C){
    尝试{
        字符串title = c.getString(C
                .getColumnIndexOrThrow(LebanonSamsung.KEY_PHONENAME));
        字符串日期= c.getString(C
                .getColumnIndexOrThrow(LebanonSamsung.KEY_MODELNUMBER));
        字符串的ImagePath = c.getString(C
                .getColumnIndexOrThrow(LebanonSamsung.KEY_PRICE));
        字符串删除= c.getString(C
                .getColumnIndexOrThrow(LebanonSamsung.KEY_URL));        TextView的title_text =(TextView中)v.findViewById(R.id.title);
            title_text.setText(职称);
        TextView的DATE_TEXT =(TextView中)v.findViewById(R.id.modelnumber);
            date_text.setText(日期);
        ImageView的item_image =(ImageView的)v.findViewById(R.id.list_image);
        imageLoader.DisplayImage(缺失,item_image);        TextView的del_image =(TextView中)v.findViewById(R.id.details);
        del_image.setText(的ImagePath);
    }赶上(例外五){
        e.printStackTrace();
    }

是,该数据库不为空可言,我跑了检查,以查看它是否为空,但它不是!
我能做什么?列表视图总是空的。我在做什么错了?谢谢!

**


更新
我注意到,我不是关闭游标。
这里是我的数据库codeS:

 公共类LebanonSamsung {
    公共静态最后弦乐KEY_PHONENAME =PHONE_NAME;
    公共静态最后弦乐KEY_PRICE =phone_price;
    公共静态最后弦乐KEY_MODELNUMBER =phone_modelnumber;
    公共静态字符串prefName =SecretFile;
    静态共享preferences preFS;
    公共静态最后弦乐KEY_ROWID =_id;
    公共静态最后弦乐KEY_URL =phone_picurl;
    私有静态最后弦乐DATABASE_NAME =PriceListDatabasesamsunglebanon;
    私有静态最终诠释DATABASE_VERSION = 1;
    私有静态DbHelper ourHelper;
    私有静态语境ourContext;
    私有静态SQLiteDatabase MDB;
    私有静态最后弦乐SQLITE_SAMSUNGLEBANON =SamsungLebanon;
    公共静态最后弦乐DATABASE_CREATESAMSUNGLEBANON =CREATE TABLE IF NOT EXISTS
            + SQLITE_SAMSUNGLEBANON
            +(
            + KEY_ROWID
            +INTEGER PRIMARY KEY AUTOINCREMENT
            + KEY_PHONENAME
            +TEXT NOT NULL,
            + KEY_URL
            +TEXT NOT NULL,
            + KEY_PRICE
            +TEXT NOT NULL,+ KEY_MODELNUMBER +TEXT NOT NULL);;    私有静态类DbHelper扩展SQLiteOpenHelper {        公共DbHelper(上下文ourContext){
            超(ourContext,DATABASE_NAME,空,DATABASE_VERSION);
            preFS = ourContext.getShared preferences(prefName,
                    Context.MODE_PRIVATE);        }        @覆盖
        公共无效的onCreate(SQLiteDatabase为arg0){
            // TODO自动生成方法存根
            arg0.execSQL(DATABASE_CREATESAMSUNGLEBANON);        }        @覆盖
        公共无效onUpgrade(SQLiteDatabase为arg0,ARG1 INT,INT ARG2){
            // TODO自动生成方法存根
            arg0.execSQL(DROP TABLE IF EXISTS+ SQLITE_SAMSUNGLEBANON);            的onCreate(为arg0);
        }
    }    公共LebanonSamsung(上下文onNavigationListener){
        ourContext = onNavigationListener;
    }    公共LebanonSamsung的open()抛出的SQLException {
        ourHelper =新DbHelper(ourContext);
        MDB = ourHelper.getWritableDatabase();
        返回此;
    }    公共无效的close(){
        ourHelper.close();
    }    公共布尔deletesamsung(){        INT doneDelete = 0;
        doneDelete = mDb.delete(SQLITE_SAMSUNGLEBANON,NULL,NULL);
        Log.w(错误双向删除升表,Integer.toString(doneDelete));
        返回doneDelete> 0;
    }    众长createEntrySamsung(字符串phonename,字符串phoneprice,
            字符串modelnumber,字符串URL){
        ContentValues​​ CV =新ContentValues​​();
        cv.put(KEY_PHONENAME,phonename);
        cv.put(KEY_PRICE,phoneprice);
        cv.put(KEY_MODELNUMBER,modelnumber);
        cv.put(KEY_URL,URL);        返回mDb.insert(SQLITE_SAMSUNGLEBANON,空,CV);    }    公共光标listsamsung(){        光标mCursor = mDb.query(SQLITE_SAMSUNGLEBANON,
                新的String [] {KEY_ROWID,KEY_PHONENAME,KEY_PRICE,
                        KEY_MODELNUMBER,KEY_URL},NULL,NULL,NULL,NULL,
                空值);        如果(mCursor!= NULL){
            mCursor.moveToFirst();
        }
        返回mCursor;
    }    公共无效insertsamsung(){
        // TODO自动生成方法存根
        新insertentries()执行();    }    公共类insertentries扩展的AsyncTask<字符串,整数,字符串> {        在preExecute保护无效(){
        }        @覆盖
        保护字符串doInBackground(字符串... PARAMS){
            // TODO自动生成方法存根
            InputStream的ISR = NULL;
            字符串结果=;
            尝试{
                字符串URL;
                HttpClient的HttpClient的=新DefaultHttpClient();
                字符串范围= prefs.getString(范围,1);
                字符串sortby = prefs.getString(过滤,ByDate);
                URL =有一个网址;
                Log.e(URL,URL);
                HttpPost httpost =新HttpPost(URL);
                HTT presponse resposne = httpclient.execute(httpost);
                HttpEntity实体= resposne.getEntity();
                ISR = entity.getContent();
                读者的BufferedReader =新的BufferedReader(
                        新的InputStreamReader(ISRUTF-8),8);
                StringBuilder的SB =新的StringBuilder();
                串线= NULL;
                而((行= reader.readLine())!= NULL){
                    sb.append(行+\\ n);
                }
                isr.close();
                结果= sb.toString();                JSONArray jArray =新JSONArray(结果);
                的for(int i = 0; I< jArray.length();我++){
                    JSONObject的JSON = jArray.getJSONObject(I)
                    createEntrySamsung(json.getString(PhoneName),
                            json.getString(PhonePrice),
                            json.getString(ModelNumber),
                            json.getString(图片网址));
                }
            }赶上(例外五){
                Log.e(log_tag,错误转换结果+ e.toString());
            }            返回结果;
        }        保护无效onProgressUpdate(整数...进度){        }        保护无效onPostExecute(字符串结果){        }
    }
}任何人


logcat的:

  08-06 17:13:10.753:E / SQLiteDatabase(532):关闭()从未被明确要求在数据库'/data/data/com.androidarabia.phones/databases / PriceListDatabasesamsunglebanon
08-06 17:13:10.753:E / SQLiteDatabase(532):android.database.sqlite.DatabaseObjectNotClosedException:应用程序没有关闭在这里打开游标或数据库对象
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.database.sqlite.SQLiteDatabase<&初始化GT;(SQLiteDatabase.java:1943)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.androidarabia.databases.LebanonSamsung.open(LebanonSamsung.java:81)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.androidarabia.drawer.SamsungLB.onCreateView(SamsungLB.java:65)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.view.ViewPager.populate(ViewPager.java:914)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.RelativeLayout.measureChildHorizo​​ntal(RelativeLayout.java:594)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.jeremyfeinstein.slidingmenu.lib.CustomViewAbove.onMeasure(CustomViewAbove.java:456)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.RelativeLayout.measureChildHorizo​​ntal(RelativeLayout.java:594)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2092)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.os.Handler.dispatchMessage(Handler.java:99)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.os.Looper.loop(Looper.java:137)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.app.ActivityThread.main(ActivityThread.java:4424)
08-06 17:13:10.753:E / SQLiteDatabase(532):在java.lang.reflect.Method.invokeNative(本机方法)
08-06 17:13:10.753:E / SQLiteDatabase(532):在java.lang.reflect.Method.invoke(Method.java:511)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-06 17:13:10.753:E / SQLiteDatabase(532):在dalvik.system.NativeStart.main(本机方法)
08-06 17:13:10.793:E /系统(532):未捕获的异常被抛出终结
08-06 17:13:10.875:E /系统(532):java.lang.IllegalStateException:不必数据库锁定!
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090)
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase $ 1.entryRemoved(SQLiteDatabase.java:2182)
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase $ 1.entryRemoved(SQLiteDatabase.java:2178)
08-06 17:13:10.875:E /系统(532):在android.util.LruCache.trimToSize(LruCache.java:197)
08-06 17:13:10.875:E /系统(532):在android.util.LruCache.evictAll(LruCache.java:285)
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143)
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126)
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914)
08-06 17:13:10.875:E /系统(532):在java.lang.Daemons $ FinalizerDaemon.doFinalize(Daemons.java:182)
08-06 17:13:10.875:E /系统(532):在java.lang.Daemons $ FinalizerDaemon.run(Daemons.java:168)
08-06 17:13:10.875:E /系统(532):在java.lang.Thread.run(Thread.java:856)


解决方案

此行​​的第二个值应该是一个游标从DB retrived

  OfflineAdapter offlineadapter =新OfflineAdapter(CTX,NULL);

尝试:

  LebanonSamsung lSamsung =新LebanonSamsung(CTX)。开();
光标C = lSamsung.listsamsung();
OfflineAdapter offlineadapter =新OfflineAdapter(CTX,C);

你可能有另一个问题是,你是填充您的数据库有一个后台任务,你在哪里调用insertsamsung()? ,你应该考虑在onPostExecute功能适配器设置到列表中。

i implemented Custom cursor adapter in my listview. but the listview is always null. Let me explain my codes:

    OfflineAdapter offlineadapter = new OfflineAdapter(ctx, null);
    listview.setAdapter(offlineadapter);

There's nothing really to explain Here. Moving into my offlineadapter Class:

public class OfflineAdapter extends CursorAdapter {

    public com.androidarabia.lazylist.ImageLoader imageLoader;

    @SuppressWarnings("deprecation")
    public OfflineAdapter(Context context, Cursor c) {
        super(context, c);

        imageLoader = new com.androidarabia.lazylist.ImageLoader(
                context.getApplicationContext());

Initializing...

public View newView(Context context, Cursor cursor, ViewGroup parent) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View v = inflater.inflate(R.layout.pricelist, parent, false);
    bindView(v, context, cursor);
    return v;

}

Inflating layout...

@Override
public void bindView(View v, Context context, Cursor c) {
    try {
        String title = c.getString(c
                .getColumnIndexOrThrow(LebanonSamsung.KEY_PHONENAME));
        String date = c.getString(c
                .getColumnIndexOrThrow(LebanonSamsung.KEY_MODELNUMBER));
        String imagePath = c.getString(c
                .getColumnIndexOrThrow(LebanonSamsung.KEY_PRICE));
        String deletion = c.getString(c
                .getColumnIndexOrThrow(LebanonSamsung.KEY_URL));

        TextView title_text = (TextView) v.findViewById(R.id.title);
            title_text.setText(title);


        TextView date_text = (TextView) v.findViewById(R.id.modelnumber);
            date_text.setText(date);


        ImageView item_image = (ImageView) v.findViewById(R.id.list_image);
        imageLoader.DisplayImage(deletion, item_image);

        TextView del_image = (TextView) v.findViewById(R.id.details);
        del_image.setText(imagePath);
    } catch (Exception e) {
        e.printStackTrace();
    }

Yes, the database isn't null at all, i ran a check to view if it's null but it's not! What can i do? the listview is always empty. what i'm doing wrong??? Thanks!

**


UPDATE i noticed that im not closing cursor. Here's my database codes:

public class LebanonSamsung {
    public static final String KEY_PHONENAME = "phone_name";
    public static final String KEY_PRICE = "phone_price";
    public static final String KEY_MODELNUMBER = "phone_modelnumber";
    public static String prefName = "SecretFile";
    static SharedPreferences prefs;
    public static final String KEY_ROWID = "_id";
    public static final String KEY_URL = "phone_picurl";
    private static final String DATABASE_NAME = "PriceListDatabasesamsunglebanon";
    private static final int DATABASE_VERSION = 1;
    private static DbHelper ourHelper;
    private static Context ourContext;
    private static SQLiteDatabase mDb;
    private static final String SQLITE_SAMSUNGLEBANON = "SamsungLebanon";
    public static final String DATABASE_CREATESAMSUNGLEBANON = "CREATE TABLE IF NOT EXISTS "
            + SQLITE_SAMSUNGLEBANON
            + " ("
            + KEY_ROWID
            + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + KEY_PHONENAME
            + " TEXT NOT NULL, "
            + KEY_URL
            + " TEXT NOT NULL, "
            + KEY_PRICE
            + " TEXT NOT NULL, " + KEY_MODELNUMBER + " TEXT NOT NULL);";

    private static class DbHelper extends SQLiteOpenHelper {

        public DbHelper(Context ourContext) {
            super(ourContext, DATABASE_NAME, null, DATABASE_VERSION);
            prefs = ourContext.getSharedPreferences(prefName,
                    Context.MODE_PRIVATE);

        }

        @Override
        public void onCreate(SQLiteDatabase arg0) {
            // TODO Auto-generated method stub
            arg0.execSQL(DATABASE_CREATESAMSUNGLEBANON);

        }

        @Override
        public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
            // TODO Auto-generated method stub
            arg0.execSQL("DROP TABLE IF EXISTS " + SQLITE_SAMSUNGLEBANON);

            onCreate(arg0);
        }
    }

    public LebanonSamsung(Context onNavigationListener) {
        ourContext = onNavigationListener;
    }

    public LebanonSamsung open() throws SQLException {
        ourHelper = new DbHelper(ourContext);
        mDb = ourHelper.getWritableDatabase();
        return this;
    }

    public void close() {
        ourHelper.close();
    }

    public boolean deletesamsung() {

        int doneDelete = 0;
        doneDelete = mDb.delete(SQLITE_SAMSUNGLEBANON, null, null);
        Log.w("error bi deleting l table", Integer.toString(doneDelete));
        return doneDelete > 0;
    }

    public long createEntrySamsung(String phonename, String phoneprice,
            String modelnumber, String url) {
        ContentValues cv = new ContentValues();
        cv.put(KEY_PHONENAME, phonename);
        cv.put(KEY_PRICE, phoneprice);
        cv.put(KEY_MODELNUMBER, modelnumber);
        cv.put(KEY_URL, url);

        return mDb.insert(SQLITE_SAMSUNGLEBANON, null, cv);

    }

    public Cursor listsamsung() {

        Cursor mCursor = mDb.query(SQLITE_SAMSUNGLEBANON,
                new String[] { KEY_ROWID, KEY_PHONENAME, KEY_PRICE,
                        KEY_MODELNUMBER, KEY_URL }, null, null, null, null,
                null);

        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

    public void insertsamsung() {
        // TODO Auto-generated method stub
        new insertentries().execute("");

    }

    public class insertentries extends AsyncTask<String, Integer, String> {

        protected void onPreExecute() {
        }

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            InputStream isr = null;
            String result = "";
            try {
                String url;
                HttpClient httpclient = new DefaultHttpClient();
                String range = prefs.getString("range", "1");
                String sortby = prefs.getString("filtering", "ByDate");
                url = "there's a url";
                Log.e("url", url);
                HttpPost httpost = new HttpPost(url);
                HttpResponse resposne = httpclient.execute(httpost);
                HttpEntity entity = resposne.getEntity();
                isr = entity.getContent();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(isr, "UTF-8"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                isr.close();
                result = sb.toString();

                JSONArray jArray = new JSONArray(result);
                for (int i = 0; i < jArray.length(); i++) {
                    JSONObject json = jArray.getJSONObject(i);
                    createEntrySamsung(json.getString("PhoneName"),
                            json.getString("PhonePrice"),
                            json.getString("ModelNumber"),
                            json.getString("imageurl"));
                }
            } catch (Exception e) {
                Log.e("log_tag", "Error converting Result " + e.toString());
            }

            return result;
        }

        protected void onProgressUpdate(Integer... progress) {

        }

        protected void onPostExecute(String result) {

        }
    }
}Anybody

? LOGCAT:

08-06 17:13:10.753: E/SQLiteDatabase(532): close() was never explicitly called on database '/data/data/com.androidarabia.phones/databases/PriceListDatabasesamsunglebanon' 
08-06 17:13:10.753: E/SQLiteDatabase(532): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at com.androidarabia.databases.LebanonSamsung.open(LebanonSamsung.java:81)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at com.androidarabia.drawer.SamsungLB.onCreateView(SamsungLB.java:65)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at com.jeremyfeinstein.slidingmenu.lib.CustomViewAbove.onMeasure(CustomViewAbove.java:456)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.os.Looper.loop(Looper.java:137)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at android.app.ActivityThread.main(ActivityThread.java:4424)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at java.lang.reflect.Method.invokeNative(Native Method)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at java.lang.reflect.Method.invoke(Method.java:511)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-06 17:13:10.753: E/SQLiteDatabase(532):  at dalvik.system.NativeStart.main(Native Method)
08-06 17:13:10.793: E/System(532): Uncaught exception thrown by finalizer
08-06 17:13:10.875: E/System(532): java.lang.IllegalStateException: Don't have database lock!
08-06 17:13:10.875: E/System(532):  at android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090)
08-06 17:13:10.875: E/System(532):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2182)
08-06 17:13:10.875: E/System(532):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2178)
08-06 17:13:10.875: E/System(532):  at android.util.LruCache.trimToSize(LruCache.java:197)
08-06 17:13:10.875: E/System(532):  at android.util.LruCache.evictAll(LruCache.java:285)
08-06 17:13:10.875: E/System(532):  at android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143)
08-06 17:13:10.875: E/System(532):  at android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126)
08-06 17:13:10.875: E/System(532):  at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914)
08-06 17:13:10.875: E/System(532):  at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
08-06 17:13:10.875: E/System(532):  at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
08-06 17:13:10.875: E/System(532):  at java.lang.Thread.run(Thread.java:856)

解决方案

This line the second value should be a Cursor retrived from your DB

OfflineAdapter offlineadapter = new OfflineAdapter(ctx, null);

Try:

LebanonSamsung lSamsung= new LebanonSamsung(ctx).open();
Cursor c = lSamsung.listsamsung();
OfflineAdapter offlineadapter = new OfflineAdapter(ctx, c);

Another issue you might have is that you are populating your DB with a background task, where are you calling "insertsamsung()"? , you should consider setting the adapter to your list in the onPostExecute function.

这篇关于使用的CursorAdapter填充的ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆