【问题标题】:CustomCursorLoader class does not refresh cursor on button clickCustomCursorLoader 类在按钮单击时不刷新光标
【发布时间】:2016-02-15 14:01:25
【问题描述】:

我编写了一个程序,通过单击按钮将移动号码添加到我的 sqlite 数据库中,该按钮工作正常,我还使用列表视图来显示添加的数据,我正在使用 CustomCursorLoader 类来查询我的结果。

我面临的问题是,假设我的数据库中没有任何内容,所以游标计数为 0,但是当我第一次插入数据时,游标计数应该变为 1 但它显示为 0,然后当那时我插入了另一个数据,我的光标计数为 1,但之前插入的数据显示在列表视图中

发布我的代码

public class Home_Page extends Activity implements 
    LoaderManager.LoaderCallbacks<Cursor> {

    DriverStatusAdapter driverStatusAdapter;
    ListView listDriverId;
    private static final int URL_LOADER = 0;
    CustomCursorLoader loader = null;

 @Override
protected void onCreate(Bundle savedInstanceState) {

    try{
        dbListHelper = new DriverSqliteHelper(getBaseContext());
        dbListHelper.open(getBaseContext());
    }catch (Exception e){
        e.printStackTrace();
    }

    String[] columns = new String[] 
    {DriverSqliteHelper.DbListHelper.DRIVER_USER_ID};
    int[] to = new int[]{R.id.DriverId};
    driverStatusAdapter = new DriverStatusAdapter(getBaseContext(),
    R.layout.view_userid_item,null,columns,to,0);
    listDriverId = (ListView) findViewById(R.id.driverIDList);
    listDriverId.setAdapter(driverStatusAdapter);
    registerForContextMenu(listDriverId);
    Log.i("LoaderManager", "Started on activity start");
    getLoaderManager().initLoader(0, null, Home_Page.this);

    txtAdd.setOnClickListener(new View.OnClickListener() {
        String userId = edtUserId.getText().toString();
        if (userId.equals("")) 
            {
              Snackbar snackbar = Snackbar.make(coordinatorLayout, "Please  
              enter user id", Snackbar.LENGTH_LONG);
              View sbView = snackbar.getView();
              TextView textView = (TextView)  
              sbView.findViewById(android.support.design.R.id.
              snackbar_text);
              snackbar.show();
            }
        else{
              sendUserStatus(); ///// method to send mobile no to server
              //// if status received from server is ok then i am inserting    
              ////the data into the database
              Log.i("LoaderManager", "Restarted on button click");
              getLoaderManager().restartLoader(0, null, Home_Page.this);
            }

 @Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
    switch (i){
        case URL_LOADER:
            Log.i("Case URL Loader", "Custom Cursor Loader called");
            loader = new CustomCursorLoader(getBaseContext());
            return loader;
        default:
            Log.i("Case default", "Default Case called");
            return null;
    }

}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    Log.i("LoaderManager", "Finished load entry... - Cursor: " + 
    cursor.getCount());
    this.loader = (CustomCursorLoader)loader;
    driverStatusAdapter.changeCursor(cursor);
}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
    Log.i("LoaderManager", "Resetting loader...");
    driverStatusAdapter.changeCursor(null);
}

}

CustomCursorLoader.java

public class CustomCursorLoader extends CursorLoader{

Context context;
DriverSqliteHelper driverSqliteHelper;
Cursor cursor;

public CustomCursorLoader(Context context) {
    super(context);
    try {
        driverSqliteHelper = new DriverSqliteHelper(context);
        driverSqliteHelper.open(context);
    }catch (Exception e){
        e.printStackTrace();
    }
}

public Cursor loadInBackground(){
    cursor = driverSqliteHelper.getDriverStatus();
    return cursor;
}

}

我的日志猫

I/LoaderManager﹕在活动开始时开始 I/Case URL Loader:自定义游标加载器调用 I/LoaderManager﹕已完成加载项... - 光标:2

********在我的第一个按钮上单击********

I/LoaderManager: 重新启动按钮单击 I/Case URL Loader:自定义游标加载器调用 I/LoaderManager﹕已完成加载项... - 光标:2

********* 在我的第二个按钮上单击 ********

I/LoaderManager: 重新启动按钮单击 I/Case URL Loader:自定义游标加载器调用 I/LoaderManager﹕已完成加载项... - 光标:3

我希望我的光标计数在第一次单击按钮时改变,谁能建议我需要做哪些改变?

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    好的,我自己找到了解决方案,我把 getLoaderManager().restartLoader(0, null, Home_Page.this);在 sendUserStatus() 方法中,我也在其中插入数据。 现在游标计数在增加,列表视图也在自动更新

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 2014-04-10
      • 1970-01-01
      • 2012-01-31
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多