android - Custom ListVIew and onclick -
here code - everything. did told still can`t click on nothing. mean can click nothing happens
package fixus.core; import java.util.arraylist; import java.util.iterator; import android.app.listactivity; import android.content.context; import android.os.bundle; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.listview; import android.widget.textview; import android.widget.adapterview.onitemclicklistener; import fixus.lib.news; import fixus.testing.datainput; public class newseractivity extends listactivity { /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); datainput di = new datainput(); arraylist news = di.getnews(); newsarrayadapter naa = new newsarrayadapter(newseractivity.this, r.layout.row, news); setlistadapter(naa); listview lv = getlistview(); lv.setonitemclicklistener(new onitemclicklistener() { public void onitemclick(adapterview parent, view view, int position, long id) { log.i("testy", "i clicked on row " + position + " , worked!"); } }); } @override /** * when user selects item in list, action * @param listview l * @param view v * @param int position * @param long id */ protected void onlistitemclick(listview l, view v, int position, long id) { super.onlistitemclick(l, v, position, id); final int index = position; //you can add whatever want happen when click here log.i("testy", "i clicked on row " + index + " , worked!"); } private class newsarrayadapter extends arrayadapter { protected arraylist items; public newsarrayadapter(context context, int textviewresourceid, arraylist items) { super(context, textviewresourceid, items); this.items = items; } @override public view getview(int position, view convertview, viewgroup parent) { view v = convertview; if(v == null) { layoutinflater vi = (layoutinflater)getsystemservice(context.layout_inflater_service); v = vi.inflate(r.layout.row, null); } news news = this.items.get(position); if(news != null) { textview tt = (textview) v.findviewbyid(r.id.toptext); textview bt = (textview) v.findviewbyid(r.id.bottomtext); if (tt != null) { tt.settext("name: "+ news.getname()); } if(bt != null){ bt.settext("status: "+ news.geturl().tostring()); } } return v; } } }
if know tutorial/example show me way love see :)
in list activity should following:
public class yourclass extends listactivity { //your variables arraylist<type> yourlist; youradapterclass adapter; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); yourlist = new arraylist<type>(); this.adapter = new youradapterclass(this, r.layout.row, yourlist); setlistadapter(this.adapter); //you might able see if below works instead of overriding listview lv = getlistview(); lv.setonitemclicklistener(new onitemclicklistener() { public void onitemclick(adapterview<?> parent, view view, int position, long id) { log.i("testy", "i clicked on row " + position + " , worked!"); } }); } @override /** * when user selects item in list, action * @param listview l * @param view v * @param int position * @param long id */ protected void onlistitemclick(listview l, view v, int position, long id) { super.onlistitemclick(l, v, position, id); final int index = position; //you can add whatever want happen when click here log.i("testy", "i clicked on row " + index + " , worked!"); } //other methods can go here list }
you don't want have onclicklistener
inside getview(...)
method in list adapter
, suppose modify way row looks (adding buttons, textfields, etc. each row) instead want have onclicklistener
in class extends listactivity
connects adapter
good luck, hope helped
//edit (adding more info)
you need 'add adapter' in oncreate method (see edited code above) should fix problem. let me know if still doesn't work though. if doesn't work can try using setonitemclicklistener
code put in oncreate
method instead, if still doesn't work try checking out tutorials (i'll see if can find one)
Comments
Post a Comment