0
我有一种利用我创建了一个数据库类片段。我有一个名为populateListView()的方法,它使用CursorAdapter来填充ListView和数据。我的问题是,我不断收到一个语法错误,指出'CursorAdapter是抽象的,无法实例化'。在活动中使用此代码时我没有任何问题,但它不会在Fragment中工作。有人知道为什么吗?自定义的CursorAdapter在片段
这里是从我的片段的代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_contacts_fragments, container, false);
inputName = (EditText)view.findViewById(R.id.inputName);
inputNumber = (EditText)view.findViewById(R.id.inputNumber);
inputEmail = (EditText)view.findViewById(R.id.inputEmail);
saveButton = (Button)view.findViewById(R.id.saveButton);
deleteAllButton = (Button)view.findViewById(R.id.deleteAllButton);
openDB();
populateListView();
return view;
}
private void openDB(){
myDB = new DBAdapter(getActivity());
myDB.open();
}
public void populateListView(){
View view = getView();
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};
CursorAdapter cursorAdapter;
//***SYNTAX ERROR WITH FOLLOWING LINE***
cursorAdapter = new CursorAdapter(getActivity(),R.layout.contacts_custom_row,cursor,fromFieldNames,toViewIDs);
myList = (ListView)view.findViewById(R.id.listView);
myList.setAdapter(cursorAdapter);
}
是的,所以SimpleCursorAdapter确实工作,但Android是告诉我,它弃用.... SimpleCursorAdapter的CursorAdapter =新SimpleCursorAdapter(getActivity(),R.layout.contacts_custom_row,光标,fromFieldNames,toViewIDs); .. ..你知道应该用什么来代替吗? –
是的。该方法的文档实际上提到了,为什么你不应该再使用它,而是要使用http://developer.android.com/intl/es/reference/android/widget/SimpleCursorAdapter.html#SimpleCursorAdapter(android.content.Context什么,int,android.database.Cursor,java.lang.String [],int []))。基本上使用'LoaderManager'用'CursorLoader'以确保执行查询关闭UI线程和更新后的任何查询关闭UI线程完成了。 –
如果您已经加载数据从UI线程还有另外一个重载的构造函数的标志。如果您不希望它在数据更新时自动重新查询,则可以使用它。 '的CursorAdapter =新SimpleCursorAdapter(getActivity(),R.layout.contacts_custom_row, 光标,fromFieldNames,toViewIDs,0);' –