java - SwipeRefreshLayout doesn't update list view -
i wanted add swipe refresh listview in fragment doesn't seem work doesn't update list view @ all. here how activity works:
- users open
picturefragment
list of images (listview) shown. - users press "add button" open
uploadimageactivity
add in image. - once done,
uploadimageactivity
close , userspicturefragment
(not updated latest image upload yet). - user swipes down update, << doesn't update latest image listview!
hope kind soul can me resolve this.
public class picturefragment extends fragment { private listview listview; private int smiley_id; private string title, date, caption, image; private imagebutton addpicbutton; private swiperefreshlayout swiperefreshlayout; private pictureadapter adapter; private tabledatabase tabledatabase; private cursor cursor; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.fragment_picture, container, false); // set listview listview = (listview) rootview.findviewbyid(r.id.piclistview); adapter = new pictureadapter(getactivity().getapplicationcontext(), r.layout.row_feed); listview.setadapter(adapter); // retrieve data database tabledatabase = new tabledatabase(getactivity()); // rows of database cursor = tabledatabase.getinformation(tabledatabase); // start last listview displays latest image first // check existing rows if(cursor.movetolast()) { { // items each column smiley_id = cursor.getint(0); title = cursor.getstring(1); date = cursor.getstring(2); caption = cursor.getstring(3); image = cursor.getstring(4); // saves images added user listview pictureitem pictureitem = new pictureitem(smiley_id, title, date, caption, image); adapter.add(pictureitem); } while (cursor.movetoprevious()); } // swipe on refresh swiperefreshlayout = (swiperefreshlayout) rootview.findviewbyid(r.id.swipe_refresh); swiperefreshlayout.setenabled(false); swiperefreshlayout.setonrefreshlistener(new swiperefreshlayout.onrefreshlistener() { @override public void onrefresh() { swiperefreshlayout.setrefreshing(true); (new handler()).postdelayed(new runnable() { @override public void run() { adapter.notifydatasetchanged(); swiperefreshlayout.setrefreshing(false); } }, 1000); } }); listview.setonscrolllistener(new abslistview.onscrolllistener() { @override public void onscrollstatechanged(abslistview view, int scrollstate) { } @override public void onscroll(abslistview view, int firstvisibleitem, int visibleitemcount, int totalitemcount) { if(firstvisibleitem == 0) swiperefreshlayout.setenabled(true); else swiperefreshlayout.setenabled(false); } }); // lead user uploadimageactivity insert image listview addpicbutton = (imagebutton) rootview.findviewbyid(r.id.addpicturebutton); addpicbutton.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { startactivity(new intent(getactivity().getapplicationcontext(), uploadimageactivity.class)); } }); return rootview; }
uploadimageactivity.java
public class uploadimageactivity extends actionbaractivity implements view.onclicklistener{ private calendar cal = calendar.getinstance(); private simpledateformat dateformatter = new simpledateformat("dd mmm yyyy, eee @ hh:mm a"); edittext pic_title, pic_caption; imageview picture; button smiley1, smiley2, smiley3, smiley4, smiley5, selected_smiley; // store in database int smiley_id = r.drawable.smile1; // set default smiley first smiley if not chosen string title, date, caption; string uripicture; // save uri in string format store image text format in database @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_picture); // removes shadow under action bar getsupportactionbar().setelevation(0); pic_title = (edittext) findviewbyid(r.id.picture_title); pic_caption = (edittext) findviewbyid(r.id.picture_caption); picture = (imageview) findviewbyid(r.id.imagebutton); smiley1 = (button) findviewbyid(r.id.button1); smiley2 = (button) findviewbyid(r.id.button2); smiley3 = (button) findviewbyid(r.id.button3); smiley4 = (button) findviewbyid(r.id.button4); smiley5 = (button) findviewbyid(r.id.button5); selected_smiley = (button) findviewbyid(r.id.select_smiley); picture.setonclicklistener(this); smiley1.setonclicklistener(this); smiley2.setonclicklistener(this); smiley3.setonclicklistener(this); smiley4.setonclicklistener(this); smiley5.setonclicklistener(this); } @override public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.menu_event, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { int id = item.getitemid(); if (id == r.id.action_ok) { title = pic_title.gettext().tostring(); date = dateformatter.format(cal.gettime()); caption = pic_caption.gettext().tostring(); // not save data if(title.isempty()) { alertuser("upload failed!", "please enter title."); } else if(caption.isempty()) { alertuser("upload failed!", "please enter caption."); } else if(uripicture.isempty()) { alertuser("upload failed!", "please upload image."); } // save data when title, caption , image not empty else { // add information database tabledatabase tabledatabase = new tabledatabase(this); tabledatabase.putinformation(tabledatabase, smiley_id, title, date, caption, uripicture); toast.maketext(getbasecontext(), "details saved", toast.length_long).show(); finish(); } return true; } return super.onoptionsitemselected(item); } @override public void onclick(view v) { switch(v.getid()) { // show image picked user case r.id.imagebutton: picture.setimagedrawable(null); crop.pickimage(this); break; // saves user's smiley choice case r.id.button1: selected_smiley.setbackgroundresource(r.drawable.smile1); selected_smiley.settext(""); setsmileyid(r.drawable.smile1); break; case r.id.button2: selected_smiley.setbackgroundresource(r.drawable.smile2); selected_smiley.settext(""); setsmileyid(r.drawable.smile2); break; case r.id.button3: selected_smiley.setbackgroundresource(r.drawable.smile3); selected_smiley.settext(""); setsmileyid(r.drawable.smile3); break; case r.id.button4: selected_smiley.setbackgroundresource(r.drawable.smile4); selected_smiley.settext(""); setsmileyid(r.drawable.smile4); break; case r.id.button5: selected_smiley.setbackgroundresource(r.drawable.smile5); selected_smiley.settext(""); setsmileyid(r.drawable.smile5); break; default: break; } } // method sets smiley id according user picks. private void setsmileyid(int smileyid) { this.smiley_id = smileyid; } // method calls alert dialog inform users message. private void alertuser(string title, string message) { alertdialog.builder dialogbuilder = new alertdialog.builder(uploadimageactivity.this); dialogbuilder.settitle(title); dialogbuilder.setmessage(message); dialogbuilder.setpositivebutton("ok", null); dialogbuilder.show(); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { if(requestcode == crop.request_pick && resultcode == result_ok) { begincrop(data.getdata()); } else if(requestcode == crop.request_crop) { handlecrop(resultcode, data); } } // method allows users crop image in square. private void begincrop(uri source) { uri destination = uri.fromfile(new file(getcachedir(), "cropped")); crop.of(source, destination).assquare().start(this); } // method ensures there no errors in cropping. private void handlecrop(int resultcode, intent result) { if(resultcode == result_ok) { picture.setimageuri(crop.getoutput(result)); uripicture = crop.getoutput(result).tostring(); } else if(resultcode == crop.result_error) { toast.maketext(this, crop.geterror(result).getmessage(), toast.length_short).show(); } }
tabledatabase.java
public class tabledatabase extends sqliteopenhelper { public string query = "create table " + tabledata.tableinfo.table_name + " (" + tabledata.tableinfo.smiley + " integer not null, " + tabledata.tableinfo.title + " text, " + tabledata.tableinfo.date + " text, " + tabledata.tableinfo.caption + " text, " + tabledata.tableinfo.image + " text);"; public tabledatabase(context context) { super(context, tabledata.tableinfo.database_name, null, tabledata.tableinfo.database_version); // check if database created log.d("database operations", "database created"); } @override public void oncreate(sqlitedatabase db) { // create table db.execsql(query); log.d("database operations", "table created"); } @override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { } // insert user information database public void putinformation(tabledatabase data, int smiley, string title, string date, string caption, string image) { // write data database sqlitedatabase sqlitedatabase = data.getwritabledatabase(); contentvalues contentvalues = new contentvalues(); // add value each column contentvalue contentvalues.put(tabledata.tableinfo.smiley, smiley); contentvalues.put(tabledata.tableinfo.title, title); contentvalues.put(tabledata.tableinfo.date, date); contentvalues.put(tabledata.tableinfo.caption, caption); contentvalues.put(tabledata.tableinfo.image, image); // insert sqlite database sqlitedatabase.insert(tabledata.tableinfo.table_name, null, contentvalues); log.d("database operations", "one row inserted"); } // retrieve data database public cursor getinformation(tabledatabase data) { // read data sqlite database sqlitedatabase sqlitedatabase = data.getreadabledatabase(); string[] columns = { tabledata.tableinfo.smiley, tabledata.tableinfo.title, tabledata.tableinfo.date, tabledata.tableinfo.caption, tabledata.tableinfo.image }; // points first row of table return sqlitedatabase.query(tabledata.tableinfo.table_name, columns, null, null, null, null, null); }
Comments
Post a Comment