我知道SimpleCursorAdapter的一个构造函数已被弃用。以下构造函数是正确的构造函数:
SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags)
有人可以向我解释一下最终的参数是什么以及我应该放在哪里?
我有一个方法,它使用SimpleCursorAdapter并用数据填充自定义布局文件:
public void populateListView(){
Cursor cursor = myDB.getAllRows();
String[] fromFieldNames = new String[] {DBAdapter.KEY_NAME,DBAdapter.KEY_NUMBER,DBAdapter.KEY_EMAIL};
int[] toViewIDs = new int[] {R.id.customRowContactName,R.id.customRowContactNumber,R.id.customRowRowEmail};
SimpleCursorAdapter cursorAdapter;
cursorAdapter = new SimpleCursorAdapter(getActivity(),R.layout.contacts_custom_row,cursor,fromFieldNames,toViewIDs,WHAT DO I PLACE HERE);
myList = (ListView)view.findViewById(R.id.listViewFragment);
myList.setAdapter(cursorAdapter);
}
我现在放了一个1来摆脱语法错误,但我不确定它是如何影响我的程序的。
答案 0 :(得分:0)
用于确定适配器行为的标志;可以是FLAG_AUTO_REQUERY和FLAG_REGISTER_CONTENT_OBSERVER的任意组合。试试这个,它取自开发者谷歌网站..
答案 1 :(得分:0)
根据文件:
int:用于确定适配器行为的标志
Thoose标志用于确定CursorAdapter应如何监视内容更改(数据在数据库中添加或删除)
您似乎可以选择以下标志之一。但是,其中一个已被弃用,您应该避免使用它们。
如果您不想监控内容的更改,请发送0。
如果您想跟踪任何更改,请使用2(您需要搜索更多如何使用它)
值0
根据this和this,您可以发送0,并且您的光标将不会观察您的内容以进行更改。
价值1
public static final int CursorAdapter.FLAG_AUTO_REQUERY 常数值:1(0x00000001)
在API级别11中添加此常量在API级别11中已弃用。 不鼓励使用此选项,因为它会导致Cursor查询 在应用程序的UI线程上执行,因此可能导致不良 响应性甚至应用程序无响应错误。作为一个 替代方案,使用带有CursorLoader的LoaderManager。
如果设置,适配器将在光标上调用requery() 内容更改通知已发送。暗示 FLAG_REGISTER_CONTENT_OBSERVER。
价值2
public static final int CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER 常数值:2(0x00000002)
在API级别11中添加如果设置,适配器将注册内容 游标上的观察者,当a时会调用onContentChanged() 通知进来。使用此标志时要小心:您需要 从适配器取消设置当前Cursor以避免由于它的泄漏 注册观察员。使用a时不需要此标志 带有CursorLoader的CursorAdapter。