Tôi đang sử dụng Thư viện tương thích Android trong dự án của mình. Tôi đã thiết lập ListFragment như mô tả trong DevGuide (http://developer.android.com/reference/android/app/Fragment.html), và sử dụng một CursorLoader Christian đơn giản được sử dụng mà không có nhà cung cấp nội dung (CursorLoader usage without ContentProvider).Các phương pháp hay nhất để truy vấn cơ sở dữ liệu SQLite trong ListFragment bằng CursorLoader?
Câu hỏi là ở đâu, trong hoạt động ListFragment/cha mẹ của tôi, tôi có nên mở cơ sở dữ liệu, trả về Con trỏ, tạo Bộ điều hợp và setListAdapter không?
Vì vậy, trong ứng dụng của tôi, tôi có TitlesFragment, DetailsFragment, FragmentLayoutActivity, DetailsLayoutActivity.
là việc thực hành tốt nhất ...
để mở cơ sở dữ liệu trong ListFragment của
onActivityCreated
và đóng nó trong ListFragment củaonDestroy
như trong mẫu mã bên dưới@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); // Open database playersDatabaseHelper = new PlayersDBAdapter(getActivity()); playersDatabaseHelper.open(); getLoaderManager().initLoader(0, null, this); ... } @Override public void onDestroy() { super.onDestroy(); if (playersDatabaseHelper != null) { playersDatabaseHelper.close(); } }
cơ sở dữ liệu truy vấn và trả lại con trỏ trong
onCreateLoader
và tạo Bộ điều hợp và setListAdapter trongonLoadFinished
như trong mẫu mã bên dưới@Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { // Now create and return a CursorLoader that will take care of // creating a Cursor for the data being displayed. return new MyCursorLoader(getActivity()) { @Override public Cursor loadInBackground() { playersCursor = playersDatabaseHelper.getAllPlayers(); return playersCursor; } }; } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { // Create an empty adapter we will use to display the loaded data. playersAdapter = new RowAdapter(getActivity(), playersCursor, R.layout.players_overview_row); // Allocate the adapter to the List displayed within this fragment. setListAdapter(playersAdapter); playersAdapter.swapCursor(cursor); // The list should now be shown. if (isResumed()) { setListShown(true); } else { setListShownNoAnimation(true); } }
Tôi có đi đúng hướng hay tôi nên di chuyển một số thứ ở đâu đó? Cảm ơn vì đã dành thời gian cho tôi!
Ai đó có thể nhận xét về câu hỏi của tôi, vui lòng. – micadelli
Bạn đã bao giờ nhận được câu trả lời chưa? Tôi ngạc nhiên khi bạn có 14 phiếu bầu và không có câu trả lời nào. – kpierce8
Yup, không bao giờ có câu trả lời: ( – micadelli