2016-03-15 58 views
0

我已經讀過需要內容提供者來更新sqlitedb響應式更改。我已經使用sqliteonehelper類的應用程序,在這裏我已經寫了所有的查詢,現在我需要做出響應式的UI,只要在sqlite數據庫用戶界面中所做的更改需要更新更新的值我已閱讀,我可以用Loader類來完成,但它需要內容供應商我想是這樣,但我不喜歡的用戶提供了我的應用程序如何可以實現不提供讓我告訴你我到目前爲止什麼:如何在沒有內容提供者的情況下實現Loader?

這是sqliteonehelper類在那裏我創作的查詢:

public void InsertorUpdate(Model_Account modlobj){ 
    SQLiteDatabase db=this.getReadableDatabase(); 
    String query=" SELECT * FROM " + Model_Account.Accunt_Table+ " WHERE " + Model_Account.Account_ID + " =" + modlobj.getAccountID() +""; 
    Cursor c = db.rawQuery(query, null); 
    if (c.moveToFirst()) { 
     Update(modlobj); 
    } else { 
     onInsert(modlobj); 
    }db.close(); 
}  

這是我正在執行的活動

JsonObjectRequest jsonObjRequest = new JsonObjectRequest(Request.Method.GET, params[0], new JSONObject(), 
     new Response.Listener<JSONObject>() { 

      @Override 
      public void onResponse(JSONObject response) { 
       String server_response = response.toString(); 
       try { 
        JSONObject json_object = new JSONObject(server_response); 
        JSONArray json_array = new JSONArray(json_object.getString("AccountPageLoadAccountListResult")); 
        for (int i = 0; i < json_array.length(); i++) { 
         Model_Account modelobjs = new Model_Account(); 
         JSONObject json_arrayJSONObject = json_array.getJSONObject(i); 
         modelobjs.setCompany_group(json_arrayJSONObject.getString("CompanyName")); 
         modelobjs.setState(json_arrayJSONObject.getString("Region")); 
         modelobjs.setAccountID(json_arrayJSONObject.getInt("AccountID")); 
         account_sf_db.InsertorUpdate(modelobjs); 

        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }, 
     new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Toast.makeText(getBaseContext(), error.toString(), Toast.LENGTH_SHORT).show(); 

      } 
     }); 
queue.add(jsonObjRequest);  

名單sqliteonehelper類:

public List<Model_Account> list() { 
     String countQuery = "SELECT * FROM " + Model_Account.Accunt_Table; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(countQuery, null); 
     List<Model_Account> listobj = new ArrayList<Model_Account>(); 
     if(cursor!=null && cursor.getCount()>0) { 
      if (cursor.moveToFirst()) { 
       do { 
        Model_Account modelobj = new Model_Account(); 
        modelobj.setID(cursor.getInt(cursor.getColumnIndex(Model_Account.id))); 
        modelobj.setCompany_group(cursor.getString(cursor.getColumnIndex(Model_Account.company_groups))); 
        modelobj.setState(cursor.getString(cursor.getColumnIndex(Model_Account.State))); 

        listobj.add(modelobj); 

       } while (cursor.moveToNext()); 
      } 

     } 
     return listobj; 

這是我在活動設置適配器我recyclerview:

listobj = account_sf_db.list(); 
       accountListAdapter = new AccountListAdapter(listobj, getApplicationContext()); 
       recyclerView.setAdapter(accountListAdapter); 

上午有點困惑從哪裏開始的任何人都可以提前helpme了謝謝!

回答

0

你可以參考這個link它創建自定義加載器,並直接從sqlite數據庫中讀取數據,而無需使用內容提供者。

相關問題