Monday 15 August 2011

android - set a listener for widgets in items of a listview -



android - set a listener for widgets in items of a listview -

i meet problem developing android project. using adapter, place many items in listview, , there imagebutton in each item. want set click listener these imagebuttons. should do?

this achieves desired result. functionality button has click response different container, has response.

mainactivity.java

import android.support.v7.app.actionbaractivity; import android.os.bundle; import android.view.menu; import android.view.menuitem; import java.util.arraylist; import android.app.activity; import android.os.bundle; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.listview; import android.widget.toast; public class mainactivity extends activity { /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.list); listview lv = (listview) findviewbyid( r.id.list ); lv.setonitemclicklistener( new onitemclicklistener() { public void onitemclick(adapterview<?> arg0, android.view.view arg1, int arg2, long arg3) { toast.maketext( mainactivity.this, "list item clicked", toast.length_short).show(); } }); arraylist<string> items = new arraylist<string>(); items.add( "item1"); items.add( "item2"); items.add( "item3"); listadapter adapter = new listadapter( this, items); lv.setadapter( adapter ); } }

listadapter.java

import android.content.context; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.view.view.onclicklistener; import android.widget.imagebutton; import android.widget.textview; import android.widget.baseadapter; import android.widget.toast; import java.util.list; public class listadapter extends baseadapter { public listadapter(context context, list<string> items ) { inflater = layoutinflater.from( context ); this.context = context; this.items = items; } public int getcount() { homecoming items.size(); } public object getitem(int position) { homecoming items.get(position); } public long getitemid(int position) { homecoming position; } public view getview(int position, view convertview, viewgroup parent) { string item = items.get(position); view v = null; if( convertview != null ) v = convertview; else v = inflater.inflate( r.layout.item, parent, false); textview itemtv = (textview)v.findviewbyid( r.id.item); itemtv.settext( item ); imagebutton button = (imagebutton)v.findviewbyid( r.id.button); button.setonclicklistener( new onclicklistener() { public void onclick(view v) { toast.maketext( context, "imagebutton clicked", toast.length_short).show(); } }); homecoming v; } private context context; private list<string> items; private layoutinflater inflater; }

item.xml

<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:descendantfocusability="blocksdescendants" > <textview android:id="@+id/item" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:textsize="28sp" /> <imagebutton android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:layout_centervertical="true" android:background="@android:color/transparent" android:src="@drawable/emo_im_cool" /> </relativelayout>

list.xml

<?xml version="1.0" encoding="utf-8" ?> <listview xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/list" />

try out , can see what's going on larn need

android

No comments:

Post a Comment