i have application populates listview user input data activity ; however, whenever enter data second activity return listview activity see populated values entered. but, if return second activity again, enter values, , go listview activity, see new values updated old ones have disappeared. now, don't know if i'm not updating listview correctly or if need use sqlite databases store data or shared preferences in order update listview new data while containing previous information.
thanks help.
listactivity.java
import android.content.intent; import android.os.bundle; import android.support.v7.app.actionbaractivity; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.listview; import android.widget.textview; import com.personalproject.peter.timerapp.testingforalarmdata.testalarm; import java.util.arraylist; import java.util.list; public class listofalarms extends actionbaractivity { private static final int result = 1000; list<testalarm> alarms = new arraylist<>(); string title; int totaltime; listview listofalarms; arrayadapter<testalarm> alarmarrayadapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_list_of_alarms); final textview emptyviewforlist = (textview) findviewbyid(r.id.emptytextviewforlist); listofalarms = (listview) findviewbyid(r.id.listview); alarmarrayadapter = new arrayadapter<>(this,android.r.layout.simple_list_item_1, alarms); listofalarms.setadapter(alarmarrayadapter); // if(listofalarms.getcount() <= 0){ // emptyviewforlist.settext("no alarms available"); // listofalarms.setemptyview(emptyviewforlist); // } listofalarms.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { alarms.get(position); intent clockdownactivity = new intent(listofalarms.this, countdownact.class); clockdownactivity.putextra("title", title); clockdownactivity.putextra("totaltime", totaltime); startactivity(clockdownactivity); } }); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_list_of_alarms, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } public void gotofillout(view view) { intent goingtofillout = new intent(this, test.class); startactivityforresult(goingtofillout, result); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { if(requestcode == result && resultcode == result_ok){ title = data.getstringextra("title"); totaltime = data.getintextra("totaltime", 0); alarms.add(new testalarm(title, totaltime)); alarmarrayadapter.notifydatasetchanged(); } } } secondactivity
import android.content.intent; import android.os.bundle; import android.support.v7.app.actionbaractivity; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.toast; public class test extends actionbaractivity { private static final string logtag = "test.class"; private static final long timeinterval = 1000; private button complete; private edittext titleedittext; private edittext houredittext; private edittext minuteedittext; private edittext secondedittext; public static int hour; public static int minute; public static int second; public static string title; public int actualtimefiniliazedinmilliseconds; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_test); titleedittext = (edittext) findviewbyid(r.id.titleedittext); houredittext = (edittext) findviewbyid(r.id.houredittext); minuteedittext = (edittext) findviewbyid(r.id.minuteedittext); secondedittext = (edittext) findviewbyid(r.id.secondedittext); complete = (button) findviewbyid(r.id.completebutton); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } public void savetimer(view view) { if(titleedittext.gettext().tostring().isempty() || houredittext.gettext().tostring().isempty() || minuteedittext.gettext().tostring().isempty() || secondedittext.gettext().tostring().isempty()) { toast.maketext(this, "oops forgot one", toast.length_long).show(); return; } // complete.setvisibility(view.gone); title = titleedittext.gettext().tostring(); hour = integer.parseint(houredittext.gettext().tostring().trim()); minute = integer.parseint(minuteedittext.gettext().tostring().trim()); second = integer.parseint(secondedittext.gettext().tostring().trim()); hour *= 3600000; minute *= 60000; second *= 1000; actualtimefiniliazedinmilliseconds = hour + minute + second; intent intent = new intent(test.this, listofalarms.class); intent.putextra("title", title); intent.putextra("totaltime", actualtimefiniliazedinmilliseconds); setresult(result_ok, intent); finish(); } } alarm.java
public class testalarm { public string title; public int totaltime; public testalarm (string title, int totaltime) { this.title = title; this.totaltime = totaltime; } @override public string tostring() { return title; } }
it seems replacing new list in listview rather updating old list of listview.
when come first time on activity a, should create 1 global array list add items added user. now, when user go on activity b , add item, should carry out value activity , add item in list.
after adding in list, should notify data adapter. so, here list have 2 items , show on activity 2 items.
Comments
Post a Comment