我想要做的是放入ListView我的应用程序,它使用内部 SQLite 数据库来获取数据。当用户单击时,通过执行新查询从数据库中获取新数据。
我已经为ListView扩展LinearLayout和实现Checkable接口的项目实现了自定义视图。作品。
获得了基于CursorAdapter. 在OnCreate()我将我的适配器设置为ListView空光标。
ListView markersList = (ListView) findViewById(R.id.markersList);
Cursor c = null;
MarkersListAdapter adapter = new MarkersListAdapter(this, c, 0);
markersList.setAdapter(adapter);
接下来,AsyncTask我正在查询doInBackground()将新游标传递onPostExecute()给 update的数据库ListView。我正在这样做:
adapter.changeCursor(newCursor);
然后我默认检查所有项目(用户只需取消选中不需要的项目)
for(int i = 0; i < this.markersList.getCount(); i++)
{
this.markersList.setItemChecked(i, true);
}
到目前为止,一切都很好。但是当我这样做时
int s = this.markersList.getCheckedItemCount();
我得到错误的价值。我猜它与旧光标有关。这只发生在新游标中的行数小于新游标中的行数时。
一般来说,我得到这样的东西
int s = this.markersList.getCheckedItemCount(); // s = 7
int d = this.markersList.getCount(); // d = 5
有针对这个的解决方法吗?