मैं अपना ऐप सेट अप कर रहा हूं ताकि लोग अपने दोस्तों के समूह बना सकें। जब कोई समूह बनाया जाता है, तो यह SQL डेटाबेस में 2 टेबल लिखता है। पहली तालिका में समूह का नाम और समूह आईडी है। दूसरी तालिका में 2 कॉलम, एक समूह आईडी और उपयोगकर्ता आईडी है। यह ठीक काम कर रहा है।एक कर्सरलोडर के साथ एंड्रॉइड में SQLite डीबी कैसे पढ़ा जाए?
हालांकि, अब मैं डेटाबेस से पढ़ने में सक्षम होना चाहता हूं। मैं cursorloader
के साथ एक सूचीदृश्य खंड का उपयोग कर रहा हूं लेकिन मुझे जानकारी प्रदर्शित करने में परेशानी हो रही है। मैं अपनी सूची दृश्य में पहली तालिका से सभी समूह नामों को सूचीबद्ध करना चाहता हूं।
मेरे समस्या यह है कि, जब मैं पहली बार cursorloader
content provider
से onCreateLoader
विधि में इस्तेमाल अपने संपर्कों को सूचीबद्ध करने के लिए, मैं एक Uri
उपयोग कर रहा था है। विशेष रूप से ContactsContracts.Contacts
कक्षा से CONTENT_URI
था।
cursorloader
contentprovider
साथ का उदाहरण:
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
Uri contentUri = ContactsContract.Contacts.CONTENT_URI;
return new CursorLoader(getActivity(),contentUri,PROJECTION,SELECTION,ARGS,ORDER);
}
हालांकि, एक सामग्री प्रदाता का उपयोग किए बिना, मैं क्या onCreateLoader
विधि में डालने के लिए क्योंकि return new CursorLoader(...)
दूसरा तर्क में एक Uri
की आवश्यकता है पता नहीं है।
कोई सुझाव है कि मैं सूचीदृश्य में अपना डेटाबेस डेटा कैसे प्रदर्शित कर सकता हूं?
टुकड़ा वर्ग कोड:
public class GroupListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
CursorAdapter mAdapter;
private OnItemSelectedListener listener;
private static final String[] PROJECTION ={GroupContract.GroupDetails.COLUMN_NAME_GROUP_NAME};
private static final String SELECTION = null;
final String[] FROM = {GroupContract.GroupDetails.COLUMN_NAME_GROUP_NAME};
final int[] TO = {android.R.id.text1};
private static final String[] ARGS = null;
private static final String ORDER = null;
private Cursor c;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mAdapter = new SimpleCursorAdapter(getActivity(), android.R.layout.simple_list_item_1,null,FROM,TO,0);
ReadDBAsync readDB = new ReadDBAsync();
readDB.execute();
}
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
setListAdapter(mAdapter);
getLoaderManager().initLoader(0,null,this);
}
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
Uri contenturi = Uri.parse("content://preamble.oneapp");
Uri tableuri = Uri.withAppendedPath(contenturi,GroupContract.GroupDetails.TABLE_NAME);
return new CursorLoader(getActivity(),tableuri,PROJECTION,SELECTION,ARGS,ORDER);
}
@Override
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
mAdapter.swapCursor(cursor);
}
@Override
public void onLoaderReset(Loader<Cursor> cursorLoader) {
mAdapter.swapCursor(null);
}
private class ReadDBAsync extends AsyncTask<Void,Void,String> {
@Override
protected String doInBackground(Void... voids) {
ContractDBHelpers mDBHelper = new ContractDBHelpers(getActivity());
SQLiteDatabase db = mDBHelper.getReadableDatabase();
String returnvalue = "database read";
c = db.query(GroupContract.GroupDetails.TABLE_NAME,PROJECTION,null,null,null,null,null);
return returnvalue;
}
@Override
protected void onPostExecute(String result){
Toast.makeText(getActivity(), result, Toast.LENGTH_LONG).show();
}
}
}
क्या आपने अपना डेटाबेस प्रबंधित करने के लिए कोई सामग्री प्रदाता बनाया है? – user936414
@ user936414 नहीं, क्या यह आवश्यक है? ऐसा करने के लाभ/नुकसान क्या हैं? संपादित करें: बस इसे पढ़ें, मुझे डेटा को एकाधिक अनुप्रयोगों में साझा करने की आवश्यकता नहीं है इसलिए मुझे आपकी जानकारी के लिए सामग्री प्रदाता –