Android 如何在setViewValue处更新光标?

Android 如何在setViewValue处更新光标?,android,android-listview,Android,Android Listview,是否有任何方法可以从setViewValue代码手动更新光标的项目值?目前我只是再次获取所有记录,然后changecoursor和notifydatasetchange,但速度非常慢: dbHelper = new DbAdapter(this); dbHelper.open(); recordsCursor = dbHelper.fetchAllRecords(); startManagingCursor(recordsCursor); String[] from = new String[

是否有任何方法可以从
setViewValue
代码手动更新光标的项目值?目前我只是再次获取所有记录,然后
changecoursor
notifydatasetchange
,但速度非常慢:

dbHelper = new DbAdapter(this);
dbHelper.open();
recordsCursor = dbHelper.fetchAllRecords();
startManagingCursor(recordsCursor);

String[] from = new String[]{DbAdapter.KEY_1, DbAdapter.KEY_2};
int[] to = new int[]{R.id.text1, R.id.background};

adapter = new SimpleCursorAdapter(this, R.layout.row, recordsCursor, from, to);

if (adapter != null) {
    adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {

        @Override
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {

            int viewId = view.getId();
            switch(viewId) {
            case R.id.text1:
                final Object item = adapter.getItem(cursor.getPosition());
                ... 
                // some logic is here, so the code below is run only when item is displayed for 5 seconds
                dbHelper.open();
                Boolean result = dbHelper.markRecordAsRead(text); // update the database
                ... 
                // the code below works, but since I read the whole database, it is SLOW
                dbHelper.open();
                recordsCursor = dbHelper.fetchAllRecords();
                adapter.changeCursor(recordsCursor);
                adapter.notifyDataSetChanged();
                // is there any way just to update the cursor's item value?

您可以使用
AsyncTask
在后台执行数据库查询。@AmulyaKhare,是的,但这对我的阅读没有帮助(当然,我也可以在后台阅读,但在我更改光标之前,用户可能会先向下滚动,然后再向上滚动-因此,他/她将看到过时的项目)。