我想要做的是放入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
有针对这个的解决方法吗?