android - How to make a ListActivity with custom List Item with nested clickable Button -


now have activity, shows list of usernames. ok works. need show custom listview item username @ left , button @ right (this button call programatically given phone number).

i know have custom adapter, skills low. , dont know how use when have done.

can me making easy custom adapter manage listitem 1 textview , 1 button , giving me code use custom adapter?

the adapter should able use new list_item2.xml:

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"       android:layout_width="fill_parent"      android:layout_height="wrap_content">         <textview          android:id="@+id/friendname"         android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignparentleft="true"         android:padding="10dp"         android:textsize="16sp"/>         <button         android:id="@+id/callbutton"         android:layout_alignbaseline="@id/friendname"         android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:text="call"         android:width="100px"         android:layout_alignparentright="true"/> </relativelayout>  

this code use now:

list_item.xml:

xml version="1.0" encoding="utf-8"?> <textview xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:padding="10dp"     android:textsize="16sp" > </textview> 

this listactivity class:

public class allactivity extends listactivity {      remoteconnection con; //conexion remota     //private mydbadapter mdbhelper;      private list<friend> friends; //lista de amigos     private list<string> usernames; //lista de usernames de amigos, para rellenar el listview     //private list<permission> permissions;      //para almacenar la config local de mi app, mostrarme o no en el mapa...     static sharedpreferences settings;     static sharedpreferences.editor configeditor;      public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);          settings=preferencemanager.getdefaultsharedpreferences(this.getapplicationcontext());         configeditor = settings.edit();          friends = new arraylist<friend>();         usernames = new arraylist<string>();          //mdbhelper=myapplication.getdatabaseadapter();         con = new remoteconnection();          actualizar();      }     protected void onactivityresult(int requestcode, int resultcode, intent data) {         if (resultcode == 1) {             setresult(1);             finish();                            }     }     public void onresume() {         super.onresume();         actualizar();           }      public void actualizar()     {         //friends = con.retrievefriends(settings.getstring("login",""));         friends = myapplication.getdatabaseadapter().retrieveallfriends();         usernames.clear();          (int i=0;i<friends.size();i++)         //for (int i=0;i<permissions.size();i++)         {             usernames.add(i,friends.get(i).getfullname());             //if (friends.get(i).getlastposition()!=null)             //  usernames.add(i,friends.get(i).getlastposition().getpositiontimeformated());             }         setlistadapter(new arrayadapter<string>(this, r.layout.list_item3, usernames));         listview lv = getlistview();         lv.settextfilterenabled(true);         lv.setonitemclicklistener(new onitemclicklistener() {           public void onitemclick(adapterview<?> parent, view view,               int position, long id) {                 bundle bundle = new bundle(); //bundle letter               bundle.putstring ("user", friends.get(position).getfullname()); //arg1 keyword of txt, arg2 txt               bundle.putstring ("email", friends.get(position).getemail());               bundle.putstring ("permission", friends.get(position).getpermission());                intent i=null;               if (friends.get(position).getpermission().equals("total"))                   = new intent (allactivity.this, locate.class);               else if (friends.get(position).getpermission().equals("perhours"))                   = new intent (allactivity.this, locateperhours.class);               else                   = new intent (allactivity.this, locateperdays.class);                i.putextras(bundle);               startactivity(i);               //startactivityforresult(i, 0);           }         });     }  } 

i edited code compatible yours

i write code modification achieve want... call initialactivity yo yhe listactivity , populate list string array (populate them not problem) so, maybe other things you...

package com.franco.test2;  import java.util.arraylist;  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.view.onclicklistener; import android.view.viewgroup; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.arrayadapter; import android.widget.button; import android.widget.listview; import android.widget.textview;  public class initialactivity extends listactivity {   //  private list<friend> friends; //lista de amigos     private arraylist<string> usernames; //lista de usernames de amigos, para rellenar el listview     private string[] usernames_array;     private activitylist listadapter;      /** called when activity first created. */     @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate); //        setcontentview(r.layout.main);         usernames_array = getresources().getstringarray(r.array.usernames);          actualizar();      }      public void actualizar()     {         //friends = con.retrievefriends(settings.getstring("login","")); //        friends = myapplication.getdatabaseadapter().retrieveallfriends(); //        usernames.clear();  //        (int i=0;i<usernames.size();i++)         //for (int i=0;i<permissions.size();i++) //        { //            usernames.add(i,friends.get(i).getfullname());             //if (friends.get(i).getlastposition()!=null)             //  usernames.add(i,friends.get(i).getlastposition().getpositiontimeformated());     //        }          usernames = new arraylist<string>();         for(int = 0 ; < usernames_array.length ; i++){             usernames.add(usernames_array[i]);         }         listadapter = new activitylist(initialactivity.this, android.r.id.text1, usernames);   //        setlistadapter(new arrayadapter<string>(this, r.layout.list_item3, usernames));         setlistadapter(listadapter);         listview lv = getlistview();         lv.settextfilterenabled(true);         lv.setonitemclicklistener(new onitemclicklistener() {           public void onitemclick(adapterview<?> parent, view view,               int position, long id) {                  //startactivityforresult(i, 0);           }         });     }      @override     protected void onlistitemclick(listview l, view v, int position, long id) {          bundle bundle = new bundle(); //bundle letter          bundle.putstring ("user", listadapter.getitem(position)); //arg1 keyword of txt, arg2 txt //         bundle.putstring ("user", friends.get(position).getfullname()); //arg1 keyword of txt, arg2 txt //         bundle.putstring ("email", friends.get(position).getemail()); //         bundle.putstring ("permission", friends.get(position).getpermission());  //         intent i=null; //         if (friends.get(position).getpermission().equals("total")) //             = new intent (allactivity.this, locate.class); //         else if (friends.get(position).getpermission().equals("perhours")) //             = new intent (allactivity.this, locateperhours.class); //         else //             = new intent (allactivity.this, locateperdays.class); // //         i.putextras(bundle); //         startactivity(i);     }      private onclicklistener callbtnlistener = new onclicklistener(){          public void onclick(view v) {             log.i("info","username: " + v.gettag());         }};      class activitylist extends arrayadapter<string>{          public activitylist(context context, int textviewresourceid, arraylist<string> objects) {             super(context, textviewresourceid, objects);         }          @override         public view getview(int position, view convertview, viewgroup parent) {             viewholder holder;             if(convertview == null){                 layoutinflater inflater = layoutinflater.from(initialactivity.this);                 convertview = inflater.inflate(r.layout.new_list_item2, parent, false);                 holder = new viewholder();                  holder.text = (textview)convertview.findviewbyid(r.id.friendname);                 holder.button = (button)convertview.findviewbyid(r.id.callbutton);                  convertview.settag(holder);             }else{                 holder = (viewholder) convertview.gettag();             }              holder.text.settext(getitem(position));             holder.button.setonclicklistener(callbtnlistener);             holder.button.settag( getitem(position) );             return convertview;         }      }      static class viewholder{         textview text;         button button;     }  } 

i deleted last line (onclick) , add onclicklistener on list activity.

<?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">         <textview              android:id="@+id/friendname"             android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:layout_alignparentleft="true"             android:padding="10dp"             android:textsize="16sp"/>         <button             android:id="@+id/callbutton"             android:layout_alignbaseline="@id/friendname"             android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:text="call"             android:width="100px"             android:layout_alignparentright="true"/> </relativelayout> 

i tested in device , works, delete dataholder class.

the other things bundle map, intent, commented because think not problem.

cheers.


Comments

Popular posts from this blog

java - SNMP4J General Variable Binding Error -

windows - Python Service Installation - "Could not find PythonClass entry" -

Determine if a XmlNode is empty or null in C#? -