i want android project have listview
able let users see own posts. have done one-to-many relationship on serverside database using username determine poster of post. how can filter listview
corresponding username of logged in username. used sharedpreferences
login...
well, here codes.
login
mainactivity
public class mainactivity extends appcompatactivity implements compoundbutton.oncheckedchangelistener { final string tag = this.getclass().getname(); button btnlogin; edittext etusername, etpassword; textview tvregister; checkbox cbremember; sharedpreferences pref; sharedpreferences.editor editor; boolean checkflag; int x = 0; toolbar toolbar; public static final string pref_name = "your shared preference name"; string userid = "userid"; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); etusername = (edittext) findviewbyid(r.id.etfirstname); etpassword = (edittext) findviewbyid(r.id.etpassword); btnlogin = (button) findviewbyid(r.id.btnlogin); tvregister = (textview) findviewbyid(r.id.tvregister); cbremember = (checkbox) findviewbyid(r.id.cbremember); cbremember.setoncheckedchangelistener(this); checkflag = cbremember.ischecked(); pref = getsharedpreferences("login.conf", context.mode_private); editor = pref.edit(); final string username = pref.getstring("username", ""); string password = pref.getstring("password", ""); hashmap postdata = new hashmap(); postdata.put("username", username); postdata.put("password", password); if (!username.equals("") && (!password.equals(""))) { postresponseasynctask task1 = new postresponseasynctask(mainactivity.this, postdata, new asyncresponse() { @override public void processfinish(string s) { if (s.contains("renter")) { log.d(tag, s); toast.maketext(mainactivity.this, "renter login successful!", toast.length_short).show(); intent in = new intent(mainactivity.this, listactivity.class); startactivity(in); finish(); } else if (s.contains("owner")) { log.d(tag, s); toast.maketext(mainactivity.this, "owner login successful!", toast.length_short).show(); intent in = new intent(mainactivity.this, ownerhome.class); startactivity(in); finish(); } else { toast.maketext(mainactivity.this, "login failed!", toast.length_short).show(); } } }); task1.execute("http://carkila.esy.es/authenticate.php"); } btnlogin.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { hashmap postdata = new hashmap(); postdata.put("username", etusername.gettext().tostring()); postdata.put("password", md5.encrypt(etpassword.gettext().tostring())); postresponseasynctask task1 = new postresponseasynctask(mainactivity.this, postdata, new asyncresponse() { @override public void processfinish(string s) { log.d(tag,s); if (s.contains("renter")) { if (checkflag) { editor.putstring("username", etusername.gettext().tostring()); editor.putstring("password", md5.encrypt(etpassword.gettext().tostring())); editor.apply(); log.d(tag, pref.getstring("password", "")); } toast.maketext(mainactivity.this, "renter login successful!", toast.length_short).show(); intent in = new intent(mainactivity.this, listactivity.class); startactivity(in); finish(); } else if (s.contains("owner")) { if (checkflag) { editor.putstring("username", etusername.gettext().tostring()); editor.putstring("password", md5.encrypt(etpassword.gettext().tostring())); editor.apply(); } editor.putstring("username", etusername.gettext().tostring()); editor.putstring("password", md5.encrypt(etpassword.gettext().tostring())); editor.apply(); toast.maketext(mainactivity.this, "owner login successful!", toast.length_short).show(); intent in = new intent(mainactivity.this, ownerhome.class); startactivity(in); finish(); } else { toast.maketext(mainactivity.this, "login failed!", toast.length_short).show(); } } }); task1.execute("http://carkila.esy.es/authenticate.php"); } }); tvregister.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent in = new intent(mainactivity.this, registeractivity.class); startactivity(in); finish(); } }); } @override public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) { checkflag = ischecked; log.d(tag, "checkflag: " + checkflag); } }
authenticate.php
<?php require 'database-config.php'; session_start(); $username = ""; $password = ""; if(isset($_post['username'])){ $username = $_post['username']; } if (isset($_post['password'])) { $password = $_post['password']; } if (isset ($_session['userid'])){ $userid = $_session['userid']; } $q = 'select * tbl_user username=:username , password=:password'; $query = $dbh->prepare($q); $query->execute(array(':username' => $username, ':password' => $password)); if($query->rowcount() == 0){ header('location: login.php?err=1'); }else{ $row = $query->fetch(pdo::fetch_assoc); session_regenerate_id(); $_session['sess_user_id'] = $row['userid']; $_session['sess_username'] = $row['username']; $_session['sess_userrole'] = $row['roles']; if( $_session['sess_userrole'] == "renter"){ echo "renter"; echo $_session['sess_user_id']; }else if ($_session['sess_userrole'] == "owner"){ echo "owner"; echo $_session['sess_user_id']; } } ?>
the listview wanted filtered posted based on logs in.
ownerhome
public class ownerhome extends appcompatactivity implements asyncresponse, adapterview.onitemclicklistener { final string tag = this.getclass().getname(); private arraylist<cars> carlist; private listview lvcars; private fundapter<cars> adapter; sharedpreferences pref; sharedpreferences.editor editor; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_ownerhome); toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); imageloader.getinstance().init(uilconfig.config(ownerhome.this)); lvcars = (listview) findviewbyid(r.id.lvonwer); pref = getsharedpreferences("login.conf", context.mode_private); log.d(tag, pref.getstring("username", "")); log.d(tag, pref.getstring("password", "")); postresponseasynctask taskread = new postresponseasynctask(ownerhome.this, this); taskread.execute("http://carkila.esy.es/user.php"); floatingactionbutton fab = (floatingactionbutton) findviewbyid(r.id.fab); fab.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { intent in = new intent(ownerhome.this, insertactivity.class); startactivity(in); } }); } @override public boolean oncreateoptionsmenu(menu menu) { menuinflater findmenuitems = getmenuinflater(); findmenuitems.inflate(r.menu.menu_main, menu); return super.oncreateoptionsmenu(menu); } @override public boolean onoptionsitemselected(menuitem item) { int id = item.getitemid(); if(id == r.id.action_logout){ editor = pref.edit(); editor.clear(); editor.commit(); intent in = new intent(ownerhome.this, mainactivity.class); startactivity(in); finish(); } return super.onoptionsitemselected(item); } @override public void processfinish(string s) { log.d(tag, s); carlist = new jsonconverter<cars>().toarraylist(s,cars.class); binddictionary<cars> dict = new binddictionary<cars>(); dict.adddynamicimagefield(r.id.ivimg, new stringextractor<cars>() { @override public string getstringvalue(cars product, int position) { return product.image; } }, new dynamicimageloader() { @override public void loadimage(string url, imageview imageview) { imageloader.getinstance().displayimage(url, imageview); // default options used } }); dict.addstringfield(r.id.tvcarmodel, new stringextractor<cars>() { @override public string getstringvalue(cars product, int position) { return "car model: " + product.car_model; } }); dict.addstringfield(r.id.tvcartype, new stringextractor<cars>() { @override public string getstringvalue(cars product, int position) { return "car type: " + product.car_type; } }); dict.addstringfield(r.id.tvcapacity, new stringextractor<cars>() { @override public string getstringvalue(cars product, int position) { return "capacity: " + product.capacity; } }); dict.addstringfield(r.id.tvfueltype, new stringextractor<cars>() { @override public string getstringvalue(cars product, int position) { return "fuel type: " + product.fueltype; } }); dict.addstringfield(r.id.tvplatenumber, new stringextractor<cars>() { @override public string getstringvalue(cars product, int position) { return "plate number: " + product.platenumber; } }); dict.addstringfield(r.id.tvposter, new stringextractor<cars>() { @override public string getstringvalue(cars product, int position) { return "posted by: " + product.owner; } }); adapter = new fundapter<>( ownerhome.this, carlist, r.layout.layout_list, dict); lvcars.setadapter(adapter); lvcars.setonitemclicklistener(this); } @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { cars selectedcars = carlist.get(position); intent in = new intent(ownerhome.this, detailactivity.class); in.putextra("cars", selectedcars); startactivity(in); } }
user.php
<?php include_once("connection.php"); session_start(); $query = "select * tbl_cars order car_no desc "; $result = mysqli_query($conn, $query); while($row = mysqli_fetch_assoc($result)){ $data[] = $row; } echo json_encode($data); ?>
cars
public class cars implements serializable { @serializedname("car_no") public int car_no; @serializedname("car_model") public string car_model; @serializedname("car_type") public string car_type; @serializedname("capacity") public int capacity; @serializedname("image") public string image; @serializedname("fueltype") public string fueltype; @serializedname("carplatenunumber") public string platenumber; @serializedname("owner") public string owner; }
correct me if i'm not understanding data storage correctly, i'm assuming mean you've created sort of post
object has place store data, , knows posted it, user_id
.
say wanted populate list view posts made user id 34
.
running query server filtering post
s user_id
should return list of posts user.
i.e. http://[url api]/posts?user_id=34
return response including posts "user_id"=34
.
Comments
Post a Comment