android - layout element wouldn't be recognized -
i'm using following code display list view database ;however, seems of layout element not recognized .. 1 tell me why ? logcat message: content must have list view id attribute android.r.id.
p.s: appreciated !! // following xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <listview android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" > </listview> </linearlayout> // following code
package com.example.androidhive; import java.util.arraylist; import java.util.hashmap; import java.util.list; import org.apache.http.namevaluepair; import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject; import android.app.listactivity; import android.app.progressdialog; import android.content.context; import android.content.intent; import android.os.asynctask; import android.os.bundle; import android.util.log; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.arrayadapter; import android.widget.checkbox; import android.widget.listadapter; import android.widget.listview; import android.widget.simpleadapter; import android.widget.textview; import android.widget.toast; public class allproductsactivity extends listactivity { // progress dialog private progressdialog pdialog; // creating json parser object jsonparser jparser = new jsonparser(); arraylist<hashmap<string, string>> productslist; // url products list private static string url_all_products = "http://10.6.13.15/android_connect/get_all_products.php"; // json node names private static final string tag_success = "success"; private static final string tag_pid= "name"; private static final string tag_category = "category"; private static final string tag_calory = "calory"; /*private static final string tag_unit = "unit"; private static final string tag_calory = "calory"; private static final string tag_carbohydrate = "carbohydrate"; private static final string tag_category = "category";*/ // array defined in php file private static final string tag_product = "product"; // confirm hash array private arrayadapter<mitems> listadapter; private mitems[] itemss; private listview mainlistview; arraylist<mitems> planetlist = new arraylist<mitems>(); // products jsonarray jsonarray products = null; arraylist<string> checked = new arraylist<string>(); @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.all_products); mainlistview = (listview)findviewbyid(r.id.list); // hashmap listview productslist = new arraylist<hashmap<string, string>>(); // loading products in background thread new loadallproducts().execute(); // listview listview lv = getlistview(); // on seleting single product // launching edit product screen mainlistview.setonitemclicklistener(new onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { mitems planet = listadapter.getitem(position); planet.togglechecked(); selectviewholder viewholder = (selectviewholder) view .gettag(); viewholder.getcheckbox().setchecked(planet.ischecked()); toast.maketext(getapplicationcontext(), "msg msg", toast.length_short).show(); //*********** our code**************** // getting values selected listitem /*string pid = ((textview) view.findviewbyid(r.id.pid)).gettext() .tostring(); // starting new intent intent in = new intent(getapplicationcontext(), editproductactivity.class); // sending pid next activity in.putextra(tag_pid, pid); // starting new activity , expecting response startactivityforresult(in, 100);*/ //*********** our code**************** } }); listadapter = new selectarraladapter(this, planetlist); mainlistview.setadapter(listadapter); } @override public boolean oncreateoptionsmenu(menu menu) { // todo auto-generated method stub menu.add(0, 1, menu.none, "products"); return super.oncreateoptionsmenu(menu); } @override public boolean onoptionsitemselected(menuitem item) { // todo auto-generated method stub switch (item.getitemid()) { case 1: (int = 0; < checked.size(); i++) { log.d("pos : ", "" + checked.get(i)); } break; } return super.onoptionsitemselected(item); } // response edit product activity @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); // if result code 100 if (resultcode == 100) { // if result code 100 received // means user edited/deleted product // reload screen again intent intent = getintent(); finish(); startactivity(intent); log.d("nun complete","tyt"); } } /** * background async task load product making http request * */ class loadallproducts extends asynctask<string, string, string> { /** * before starting background thread show progress dialog * */ @override protected void onpreexecute() { super.onpreexecute(); pdialog = new progressdialog(allproductsactivity.this); pdialog.setmessage("loading items. please wait..."); pdialog.setindeterminate(false); pdialog.setcancelable(false); pdialog.show(); } /** * getting products url * */ protected string doinbackground(string... args) { // building parameters list<namevaluepair> params = new arraylist<namevaluepair>(); // getting json string url jsonobject json = jparser.makehttprequest(url_all_products, "get", params); // check log cat json reponse log.d("all products: ", json.tostring()); try { // checking success tag int success = json.getint(tag_success); if (success == 1) { itemss = (mitems[]) getlastnonconfigurationinstance(); int ii=0; while( ii < products.length()){ jsonobject c = products.getjsonobject(ii); string category = c.getstring(tag_category ); //double dd =c.getdouble(tag_calory); string dd = c.getstring(tag_calory ); //itemss[ii]= dd; planetlist.add(new mitems(dd)); ii++; // log.d("d ", textutils.join(",", d)); } // products found // getting array of products log.d("all products: ", json.tostring()); products = json.getjsonarray(tag_product); // looping through products (int = 0; < products.length(); i++) { jsonobject c = products.getjsonobject(i); // storing each json item in variable string id = c.getstring(tag_pid); // name string category = c.getstring(tag_category ); // no need them !! /* string unit = c.getstring(tag_unit ); string category = c.getstring(tag_category ); string calory = c.getstring(tag_calory ); string carbohydrate = c.getstring(tag_carbohydrate ); */ // creating new hashmap hashmap<string, string> map = new hashmap<string, string>(); // adding each child node hashmap key => value map.put(tag_pid, id); map.put(tag_category, category); //map.put(tag_name, name); // adding hashlist arraylist productslist.add(map); log.d("all products: ", json.tostring()); } } else { // no products found // launch add new product activity intent = new intent(getapplicationcontext(), newproductactivity.class); // closing previous activities i.addflags(intent.flag_activity_clear_top); startactivity(i); } } catch (jsonexception e) { e.printstacktrace(); } return null; } /** * after completing background task dismiss progress dialog * **/ /* protected void onpostexecute(string file_url) { // dismiss dialog after getting products pdialog.dismiss(); // updating ui background thread runonuithread(new runnable() { public void run() { /** * updating parsed json data listview * listadapter adapter = new simpleadapter( allproductsactivity.this, productslist, r.layout.list_item, new string[] { tag_pid, tag_category}, new int[] { r.id.pid, r.id.category}); // updating listview setlistadapter(adapter); } }); } */ } private static class mitems { private string name = ""; private boolean checked = false; private double calory = 0.0; public mitems() { } public mitems(string name) { this.name = name; } public mitems(string name, boolean checked) { this.name = name; this.checked = checked; } public string getname() { return name; } public double getcalroy() { return calory; } public void setname(string name) { this.name = name; } public boolean ischecked() { return checked; } public void setchecked(boolean checked) { this.checked = checked; } public string tostring() { return name; } public void togglechecked() { checked = !checked; } } // new class private static class selectviewholder { private checkbox checkbox; private textview textview; public selectviewholder() { } public selectviewholder(textview textview, checkbox checkbox) { this.checkbox = checkbox; this.textview = textview; } public checkbox getcheckbox() { return checkbox; } public void setcheckbox(checkbox checkbox) { this.checkbox = checkbox; } public textview gettextview() { return textview; } public void settextview(textview textview) { this.textview = textview; } } // new class private static class selectarraladapter extends arrayadapter<mitems> { private layoutinflater inflater; public selectarraladapter(context context, list<mitems> planetlist) { super(context, r.layout.list_item, r.id.rowtextview, planetlist); // cache layoutinflate avoid asking new 1 each time. inflater = layoutinflater.from(context); } @override public view getview(int position, view convertview, viewgroup parent) { // planet display mitems planet = (mitems) this.getitem(position); // child views in each row. checkbox checkbox; textview textview; textview here; // create new row view if (convertview == null) { convertview = inflater.inflate(r.layout.list_item, null); // find child views. textview = (textview) convertview .findviewbyid(r.id.rowtextview); checkbox = (checkbox) convertview.findviewbyid(r.id.checkbox01); // optimization: tag row it's child views, don't // have // call findviewbyid() later when reuse row. convertview.settag(new selectviewholder(textview, checkbox)); // if checkbox toggled, update planet tagged with. checkbox.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { checkbox cb = (checkbox) v; mitems planet = (mitems) cb.gettag(); planet.setchecked(cb.ischecked()); } }); } // reuse existing row view else { // because use viewholder, avoid having call // findviewbyid(). selectviewholder viewholder = (selectviewholder) convertview .gettag(); checkbox = viewholder.getcheckbox(); textview = viewholder.gettextview(); } // tag checkbox planet displaying, can // access planet in onclick() when checkbox toggled. checkbox.settag(planet); // display planet data checkbox.setchecked(planet.ischecked()); textview.settext(planet.getname()); return convertview; } } public object onretainnonconfigurationinstance() { return itemss; } }
you using listactivity instead of normal activity, view should have default android:id/list:.
change list view in xml
<listview android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" > </listview> check listactivity tutorial more info
Comments
Post a Comment