java - Taking details from onClick item -
first apologize if question already, couldn't find right answer problem. transferred data mysql list, , that's working fine, want make item list clickable. when select person list, dialog should pop name , button call him. issue how name , phone number on click. please take on code, cause wasn't making specific strings in other examples. , here codes:
application adapter
package com.sj.jsondemo; import java.util.list; import android.content.context; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.arrayadapter; import android.widget.textview; public class applicationadapter extends arrayadapter<application>{ private list<application> items; public applicationadapter(context context, list<application> items) { super(context, r.layout.app_custom_list, items); this.items = items; } @override public int getcount() { return items.size(); } @override public view getview(int position, view convertview, viewgroup parent) { view v = convertview; if(v == null) { layoutinflater li = layoutinflater.from(getcontext()); v = li.inflate(r.layout.app_custom_list, null); } application app = items.get(position); if(app != null) { textview imetext = (textview)v.findviewbyid(r.id.titletxt); textview teltext = (textview)v.findviewbyid(r.id.tel); textview gradtext = (textview)v.findviewbyid(r.id.dltxt); if(imetext != null) imetext.settext(app.getime()); if(gradtext != null) gradtext.settext(app.getgrad()); if(teltext != null) teltext.settext(app.gettelefon()); } return v; } }
fetchdatatask
package com.sj.jsondemo; import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstream; import java.io.inputstreamreader; import java.util.arraylist; import java.util.list; import org.apache.http.httpentity; import org.apache.http.httpresponse; import org.apache.http.client.httpclient; import org.apache.http.client.methods.httpget; import org.apache.http.impl.client.defaulthttpclient; import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject; import android.os.asynctask; public class fetchdatatask extends asynctask<string, void, string>{ private final fetchdatalistener listener; private string msg; public fetchdatatask(fetchdatalistener listener) { this.listener = listener; } @override protected string doinbackground(string... params) { if(params == null) return null; // url params string url = params[0]; try { // create http connection httpclient client = new defaulthttpclient(); httpget httpget = new httpget(url); // connect httpresponse response = client.execute(httpget); // response httpentity entity = response.getentity(); if(entity == null) { msg = "no response server"; return null; } // response content , convert json string inputstream = entity.getcontent(); return streamtostring(is); } catch(ioexception e){ msg = "no network connection"; } return null; } @override protected void onpostexecute(string sjson) { if(sjson == null) { if(listener != null) listener.onfetchfailure(msg); return; } try { // convert json string json array jsonarray ajson = new jsonarray(sjson); // create apps list list<application> apps = new arraylist<application>(); for(int i=0; i<ajson.length(); i++) { jsonobject json = ajson.getjsonobject(i); application app = new application(); app.setime(json.getstring("ime")); app.setgrad(json.getstring("grad")); app.settelefon(json.getstring("broj")); // add app apps list apps.add(app); } //notify activity fetch data has been complete if(listener != null) listener.onfetchcomplete(apps); } catch (jsonexception e) { msg = "invalid response"; if(listener != null) listener.onfetchfailure(msg); return; } } /** * function convert response stream json string * @param respons string * @return json string * @throws ioexception */ public string streamtostring(final inputstream is) throws ioexception{ bufferedreader reader = new bufferedreader(new inputstreamreader(is)); stringbuilder sb = new stringbuilder(); string line = null; try { while ((line = reader.readline()) != null) { sb.append(line + "\n"); } } catch (ioexception e) { throw e; } { try { is.close(); } catch (ioexception e) { throw e; } } return sb.tostring(); } }
and main
package com.sj.jsondemo; import java.util.list; import android.app.alertdialog; import android.app.listactivity; import android.app.progressdialog; import android.content.dialoginterface; import android.content.intent; import android.net.uri; 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 android.widget.toast; import android.widget.adapterview.onitemclicklistener; public class mainactivity extends listactivity implements fetchdatalistener{ private progressdialog dialog; private static final string tag_pid = "pid"; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); initview(); setlistadapter(new arrayadapter<string>(this, r.layout.activity_main)); listview listview = getlistview(); listview.settextfilterenabled(true); listview.setonitemclicklistener(new onitemclicklistener() { public void onitemclick(adapterview<?> parent, view view, final int position, long id) { alertdialog.builder adb=new alertdialog.builder(mainactivity.this); adb.settitle("odabir"); adb.setmessage("izabrali ste profesora "+ ??? ); //how name of selected person adb.setpositivebutton("call",new dialoginterface.onclicklistener() { public void onclick (dialoginterface dialog, int which) { intent i=new intent(android.content.intent.action_dial, uri.parse("tel:+"+ ???); //how number of selected person startactivity(i); } }); adb.show(); } }); } private void initview() { // show progress dialog dialog = progressdialog.show(this, "", "loading..."); string url = "http://192.168.1.12/test/apps.php"; fetchdatatask task = new fetchdatatask(this); task.execute(url); } @override public void onfetchcomplete(list<application> data) { // dismiss progress dialog if(dialog != null) dialog.dismiss(); // create new adapter applicationadapter adapter = new applicationadapter(this, data); // set adapter list setlistadapter(adapter); } @override public void onfetchfailure(string msg) { // dismiss progress dialog if(dialog != null) dialog.dismiss(); // show failure message toast.maketext(this, msg, toast.length_long).show(); } }
and php
<?php $host = "localhost"; // host of mysql server $user = "root"; // mysql user $pwd = "aleksa"; // mysql user's password $db = "spisak"; // database name // create connection $con = mysqli_connect($host, $user, $pwd, $db); // check connection if(mysqli_connect_errno($con)) { die("failed connect mysql: " . mysqli_connect_error()); } // query application data $sql = "select * lista order id"; $result = mysqli_query($con, $sql); // array save application data $rows = array(); // iterate query result , add every rows array while($row = mysqli_fetch_array($result, mysqli_assoc)) { $rows[] = $row; } // close database connection mysqli_close($con); // echo application data in json format echo json_encode($rows);
thank in advance.
rgds,
alex
edit: edited code, made shorted, can me more easily.
Comments
Post a Comment