android - How do I pass data from sqlite database to another activity? -
i have database columns {id,eng,kurd,ar} , have populated listview shows {eng} databse. want pass {eng,kurd,ar} have same {id} when user clicks item in listview, when click item app crashes, else works fine there no error in non of other classes[adapter,sqliteopenhelper]
mainactivity.class
package com.rawa.rawadict; import android.content.intent; import android.database.cursor; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.view; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.listview; import android.widget.textview; import java.io.ioexception; import java.sql.sqlexception; import java.util.arraylist; public class mainactivity extends appcompatactivity { adapter adapter; arraylist<item> mylist = new arraylist<item>(); listview mylistview; databasehelper mydbhelper = new databasehelper(this); string engres,kurdres,arres; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); try { mydbhelper.createdatabase(); mydbhelper.opendatabase(); } catch (ioexception e) { throw new error("unable create database"); } cursor cursor = mydbhelper.querydata("select * zankodict"); if (cursor != null) { if (cursor.movetofirst()) { { item itemm = new item(); itemm.setid(cursor.getstring(0)); itemm.seteng(cursor.getstring(1)); mylist.add(itemm); } while (cursor.movetonext()); } } adapter = new adapter(this, r.layout.single_row, mylist); mylistview = (listview) findviewbyid(r.id.lview); mylistview.setadapter(adapter); adapter.notifydatasetchanged(); mylistview.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { textview text_id = (textview) view.findviewbyid(r.id.tid); string sel_id = text_id.gettext().tostring(); cursor cursor = mydbhelper.querydata("select * zankodict id =" + sel_id); if (cursor != null) { if (cursor.movetofirst()) { { engres = cursor.getstring(1); kurdres=cursor.getstring(2); arres= cursor.getstring(3); } while (cursor.movetonext()); } } // create intent start activity intent intent = new intent(mainactivity.this, result.class); // add selected text item our intent. bundle extras = new bundle(); extras.putstring("eng",engres); extras.putstring("kurd",kurdres); extras.putstring("ar",arres); intent.putextras(extras); startactivity(intent); } }) ; } }
result.class
package com.rawa.rawadict; import android.content.intent; import android.database.cursor; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.widget.textview; import java.io.ioexception; import java.util.arraylist; public class result extends appcompatactivity { textview etview2,ktview2,atview2; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.result_view); etview2 = (textview) findviewbyid(r.id.etextview2); ktview2 = (textview) findviewbyid(r.id.ktextview2); atview2 = (textview) findviewbyid(r.id.atextview2); intent intent = getintent(); bundle extras = intent.getextras(); string eng = extras.getstring("eng"); string kurd = extras.getstring("kurd"); string ar = extras.getstring("ar"); etview2.settext(eng); etview2.settext(kurd); etview2.settext(ar); } }
i want pass bundle result.class
the best approach passing data activity activity , particularly database pass (id) intent when arrive @ destination activity, extract , use query database based on id.
this reduce amount of data have pass through intent instance.
if want pass 3 items however, can use intent extras instead of bundle this:
intent intent = new intent(mainactivity.this, result.class); intent.putextra("eng",engres); intent.putextra"kurd",kurdres); intent.putextra("ar",arres); startactivity(intent);
to extract in results activity;
intent intent = getintent(); string eng = intent.getextras().getstring("eng"); string kurd = intent.getextras().getstring("kurd"); string ar = intent.getextras().getstring("ar");
i hope helps , luck!
Comments
Post a Comment