Why can't I click a Button in a ListView using SimpleAdapter in android? -
i newbie android. have posted question earlier didn't find appropriate answer. requirement make button
clickable in listview
which generated using simpleadapter
.i don't want use customadapter
,baseadapter
or other adapter. don't want extend activty simpleadapter
.my code , error logs follows. if has solutions please explain me step step. thank you.
mainactivity.java
public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); arraylist<hashmap<string, string>>val1=new arraylist<hashmap<string,string>>(); hashmap<string, string>val=new hashmap<string,string>(); val.put("a","a"); val.put("c","c"); val.put("b","b"); val1.add(val); final listview l=(listview)findviewbyid(r.id.listview1); listadapter k=new simpleadapter(this,val1,r.layout.mytask,new string[]{"taskid","heading","status"},new int[]{r.id.view1,r.id.view2,r.id.viewstatus}); button b=(button)findviewbyid(r.id.mytask); b.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { // todo auto-generated method stub toast.maketext(mainactivity.this,"save",toast.length_short).show(); } }); l.setadapter(k); }
error log:
04-07 01:43:07.075: e/androidruntime(2113): fatal exception: main 04-07 01:43:07.075: e/androidruntime(2113): process: com.example.s, pid: 2113 04-07 01:43:07.075: e/androidruntime(2113): java.lang.runtimeexception: unable start activity componentinfo{com.example.s/com.example.s.mainactivity}: java.lang.nullpointerexception 04-07 01:43:07.075: e/androidruntime(2113): @ android.app.activitythread.performlaunchactivity(activitythread.java:2195) 04-07 01:43:07.075: e/androidruntime(2113): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2245) 04-07 01:43:07.075: e/androidruntime(2113): @ android.app.activitythread.access$800(activitythread.java:135) 04-07 01:43:07.075: e/androidruntime(2113): @ android.app.activitythread$h.handlemessage(activitythread.java:1196) 04-07 01:43:07.075: e/androidruntime(2113): @ android.os.handler.dispatchmessage(handler.java:102) 04-07 01:43:07.075: e/androidruntime(2113): @ android.os.looper.loop(looper.java:136) 04-07 01:43:07.075: e/androidruntime(2113): @ android.app.activitythread.main(activitythread.java:5017) 04-07 01:43:07.075: e/androidruntime(2113): @ java.lang.reflect.method.invokenative(native method) 04-07 01:43:07.075: e/androidruntime(2113): @ java.lang.reflect.method.invoke(method.java:515) 04-07 01:43:07.075: e/androidruntime(2113): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) 04-07 01:43:07.075: e/androidruntime(2113): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) 04-07 01:43:07.075: e/androidruntime(2113): @ dalvik.system.nativestart.main(native method) 04-07 01:43:07.075: e/androidruntime(2113): caused by: java.lang.nullpointerexception 04-07 01:43:07.075: e/androidruntime(2113): @ com.example.s.mainactivity.oncreate(mainactivity.java:34) 04-07 01:43:07.075: e/androidruntime(2113): @ android.app.activity.performcreate(activity.java:5231) 04-07 01:43:07.075: e/androidruntime(2113): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1087) 04-07 01:43:07.075: e/androidruntime(2113): @ android.app.activitythread.performlaunchactivity(activitythread.java:2159) 04-07 01:43:07.075: e/androidruntime(2113): ... 11 more
mytask.xml
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <textview android:id="@+id/textview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:layout_margintop="18dp" android:text="task name:" android:textsize="15dp" android:textstyle="bold" /> <textview android:id="@+id/view1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:text="textview" android:textsize="15dp" android:textstyle="bold" android:visibility="invisible" /> <textview android:id="@+id/view2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/textview1" android:layout_alignbottom="@+id/textview1" android:layout_marginleft="31dp" android:layout_torightof="@+id/textview1" android:text="textview" android:textsize="15dp" android:textstyle="bold" android:visibility="visible" /> <textview android:id="@+id/viewstatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/view2" android:layout_alignbottom="@+id/view2" android:layout_alignparentright="true" android:text="pending" android:textsize="15dp" android:textstyle="bold" /> <textview android:id="@+id/textview2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/viewstatus" android:layout_alignbottom="@+id/viewstatus" android:layout_marginright="14dp" android:layout_toleftof="@+id/viewstatus" android:text="status:" android:textsize="15dp" android:textstyle="bold" /> <button android:id="@+id/mytask" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_below="@+id/textview1" android:text="button" /> </relativelayout>
activity_main.xml
<listview android:id="@+id/listview1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:layout_marginleft="106dp" android:layout_margintop="124dp" > </listview>
activity_main.xml
not have button
id mytask
. cannot initialize button in mainactivtiy.
the button
belongs mytask.xml
override getview , have button listener there.
http://developer.android.com/reference/android/widget/simpleadapter.html
edit:
simpleadapter k=new simpleadapter(this,val1,r.layout.mytask,new string[]{"a","c","b"},new int[]{r.id.view1,r.id.view2,r.id.viewstatus}) { @override public view getview (int position, view convertview, viewgroup parent) { view v = super.getview(position, convertview, parent); button b=(button)v.findviewbyid(r.id.mytask); b.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { // todo auto-generated method stub toast.maketext(mainactivity.this,"save",toast.length_short).show(); } }); return v; } };
edit: since not convinced here's snap
Comments
Post a Comment