android - ListView animation with images and text that runs on Froyo -


i'd implement listview animation imageview on left , text on right , i'm using adapter gives listview animations, , they're awesome, i'd know how can modify class, particularly, adapter show listview imageview on left. here's class:

public class post extends sherlockactivity implements         pulltorefreshattacher.onrefreshlistener, onitemlongclicklistener,         onitemclicklistener {      private pulltorefreshattacher mpulltorefreshattacher;     private listview listview;     private displaymetrics metrics;     actionmode mmode;     animation animation;     intent i;      @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);          metrics = new displaymetrics();         getwindowmanager().getdefaultdisplay().getmetrics(metrics);         sessioncheck();     }      private void sessioncheck() {         // todo auto-generated method stub         session session = session.getactivesession();         if (session != null && session.isopened()) {             // user's data             listview = new listview(this);             listview.setfadingedgelength(0);             arraylist<string> strings = new arraylist<string>();              (int = 0; < 100; i++) {                 strings.add("that's list number " + (i + 1));             }              mainadapter madapter = new mainadapter(this, strings, metrics);              listview.setadapter(madapter);             listview.setonitemlongclicklistener(this);             listview.setonitemclicklistener(this);             setcontentview(listview);             pulltorefresh();         } else {             toast.maketext(getapplicationcontext(), "please log in first",                     toast.length_long).show();             = new intent(getapplicationcontext(), startbase.class);             startactivity(i);         }     }      private void pulltorefresh() {         // todo auto-generated method stub         pulltorefreshattacher.options ptroptions = new pulltorefreshattacher.options();         ptroptions.refreshscrolldistance = 0.6f;         ptroptions.headerlayout = r.layout.customised_header;         ptroptions.headertransformer = new customisedheadertransformer();         mpulltorefreshattacher = pulltorefreshattacher.get(this, ptroptions);         pulltorefreshattacher.viewdelegate handler = new abslistviewdelegate();         mpulltorefreshattacher.addrefreshableview(listview, handler, this);     }      @override     public void onrefreshstarted(view view) {         new asynctask<void, void, void>() {              @override             protected void doinbackground(void... params) {                 try {                     thread.sleep(3000);                 } catch (interruptedexception e) {                     e.printstacktrace();                 }                 return null;             }              @override             protected void onpostexecute(void result) {                 super.onpostexecute(result);                  // notify pulltorefreshattacher refresh has finished                 mpulltorefreshattacher.setrefreshcomplete();             }         }.execute();     }      static class customisedheadertransformer extends             pulltorefreshattacher.headertransformer {          private view mheaderview;         private textview mmaintextview;         private textview mprogresstextview;          @override         public void onviewcreated(activity activity, view headerview) {             mheaderview = headerview;             mmaintextview = (textview) headerview.findviewbyid(r.id.ptr_text);             mprogresstextview = (textview) headerview                     .findviewbyid(r.id.ptr_text_secondary);         }          @override         public void onreset() {             mmaintextview.setvisibility(view.visible);             mmaintextview.settext(r.string.pull_to_refresh_pull_label);              mprogresstextview.setvisibility(view.gone);             mprogresstextview.settext("");         }          @override         public void onpulled(float percentagepulled) {             mprogresstextview.setvisibility(view.visible);             mprogresstextview                     .settext(math.round(100f * percentagepulled) + "%");         }          @override         public void onrefreshstarted() {             mmaintextview.settext(r.string.pull_to_refresh_refreshing_label);             mprogresstextview.setvisibility(view.gone);         }          @override         public void onreleasetorefresh() {             mmaintextview.settext(r.string.pull_to_refresh_release_label);         }          @override         public void onrefreshminimized() {             // in header transformer, ignore call         }          @override         public boolean showheaderview() {             final boolean changevis = mheaderview.getvisibility() != view.visible;             if (changevis) {                 mheaderview.setvisibility(view.visible);             }             return changevis;         }          @override         public boolean hideheaderview() {             final boolean changevis = mheaderview.getvisibility() != view.gone;             if (changevis) {                 mheaderview.setvisibility(view.gone);             }             return changevis;         }     }      @override     public boolean oncreateoptionsmenu(menu menu) {          menuinflater inflater = getsupportmenuinflater();         inflater.inflate(r.menu.main, menu);          submenu submenu1 = menu.addsubmenu("categories");         submenu1.add(0, 1, menu.none, "one");         submenu1.add(0, 2, menu.none, "two");         submenu1.add(0, 3, menu.none, "three");         submenu1.add(0, 4, menu.none, "four");         submenu1.add(0, 5, menu.none, "five");         submenu1.add(0, 6, menu.none, "six");          menuitem submenu1item = submenu1.getitem();         submenu1item.seticon(android.r.drawable.ic_dialog_info);         submenu1item.setshowasaction(menuitem.show_as_action_always                 | menuitem.show_as_action_with_text);         return super.oncreateoptionsmenu(menu);     }      @override     public boolean onoptionsitemselected(menuitem item) {          switch (item.getitemid()) {             case 1:                 toast.maketext(getapplicationcontext(), "that's selected",                         toast.length_long).show();                 break;             case 2:                 toast.maketext(getapplicationcontext(), "that's selected",                         toast.length_long).show();                 break;             case 3:                 toast.maketext(getapplicationcontext(), "that's selected",                         toast.length_long).show();                 break;             case 4:                 toast.maketext(getapplicationcontext(), "that's selected",                         toast.length_long).show();                 break;             case 5:                 toast.maketext(getapplicationcontext(), "that's selected",                         toast.length_long).show();                 break;             case 6:                 toast.maketext(getapplicationcontext(), "that's selected",                         toast.length_long).show();                 break;             case r.id.action_account:                 = new intent(getapplicationcontext(), account.class);                 startactivity(i);                 break;             case r.id.action_logout:                 toast.maketext(getapplicationcontext(), "working on this...",                         toast.length_long).show();                 break;         }         return super.onoptionsitemselected(item);     }      public class mainadapter extends arrayadapter<string> {         private context context;         private layoutinflater minflater;         private arraylist<string> strings;         private displaymetrics metrics_;          private class holder {             public textview textview;         }          public mainadapter(context context, arraylist<string> strings,                            displaymetrics metrics) {             super(context, 0, strings);             this.context = context;             this.minflater = (layoutinflater) this.context                     .getsystemservice(context.layout_inflater_service);             this.strings = strings;             this.metrics_ = metrics;         }          @override         public view getview(final int position, view convertview,                             viewgroup parent) {             final string str = this.strings.get(position);             final holder holder;              if (convertview == null) {                 convertview = minflater.inflate(                         android.r.layout.simple_list_item_1, null);                 convertview.setbackgroundcolor(0xff202020);                  holder = new holder();                 holder.textview = (textview) convertview                         .findviewbyid(android.r.id.text1);                 holder.textview.settextcolor(0xffffffff);                 holder.textview.setbackgroundresource(r.drawable.list_selector);                  convertview.settag(holder);             } else {                 holder = (holder) convertview.gettag();             }              holder.textview.settext(str);              animation = animation = animationutils.loadanimation(context,                     r.anim.push_left_in);              animation.setduration(200);             convertview.startanimation(animation);             animation = null;              return convertview;         }      }      private final class anactionmodeofepicproportions implements             actionmode.callback {         @override         public boolean oncreateactionmode(actionmode mode, menu menu) {              menu.add("one").seticon(android.r.drawable.ic_dialog_info)                     .setshowasaction(menuitem.show_as_action_if_room);              menu.add("two").seticon(android.r.drawable.ic_dialog_info)                     .setshowasaction(menuitem.show_as_action_if_room);              menu.add("three").seticon(android.r.drawable.ic_dialog_info)                     .setshowasaction(menuitem.show_as_action_if_room);              menu.add("four").seticon(android.r.drawable.ic_dialog_info)                     .setshowasaction(menuitem.show_as_action_if_room);              menu.add("five").seticon(android.r.drawable.ic_dialog_info)                     .setshowasaction(menuitem.show_as_action_if_room);              menu.add("six").seticon(android.r.drawable.ic_dialog_info)                     .setshowasaction(menuitem.show_as_action_if_room);              return true;         }          @override         public boolean onprepareactionmode(actionmode mode, menu menu) {             return false;         }          @override         public boolean onactionitemclicked(actionmode mode, menuitem item) {             toast.maketext(getapplicationcontext(), "got click: " + item,                     toast.length_short).show();             mode.finish();             return true;         }          @override         public void ondestroyactionmode(actionmode mode) {         }     }      @override     public boolean onitemlongclick(adapterview<?> arg0, view arg1, int arg2,                                    long arg3) {         // todo auto-generated method stub         mmode = startactionmode(new anactionmodeofepicproportions());         return false;     }      @override     public void onitemclick(adapterview<?> arg0, view arg1, int arg2, long arg3) {         // todo auto-generated method stub         toast.maketext(getapplicationcontext(), "list item selected",                 toast.length_long).show();     }  } 

i've copy pasted :-) adapter you're looking mainadapter...way down there. please me out.

you should modify part:

if (convertview == null) {     convertview = minflater.inflate(android.r.layout.simple_list_item_1, null);     convertview.setbackgroundcolor(0xff202020);      holder = new holder();     holder.textview = (textview) convertview.findviewbyid(android.r.id.text1);     holder.textview.settextcolor(0xffffffff);     holder.textview.setbackgroundresource(r.drawable.list_selector);      convertview.settag(holder); } else {     holder = (holder) convertview.gettag(); } 

so, android.r.layout.simple_list_item_1 layout used list items. contains 1 textview. add imageview should use custom list item layout, example one:

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:gravity="center_vertical"     android:minheight="?android:attr/listpreferreditemheight">      <imageview         android:id="@+id/pic"         android:layout_width="48dp"         android:layout_height="48dp"         android:src="@drawable/your_custom_image"         android:scaletype="centercrop"/>      <textview         android:id="@+id/text"         android:layout_width="0dp"         android:layout_height="wrap_content"         android:layout_weight="1"         android:layout_marginleft="8dp"/> </linearlayout> 

put in xml file res\layout directory , name custom_list_item.xml. replace android.r.layout.simple_list_item_1 r.layout.custom_list_item , android.r.id.text1 r.id.text in code.

thats all! animation stays same.

if want change image each list item should:

  • add imageview imageview field holder class
  • add

    holder.imageview = (imageview) convertview.findviewbyid(r.id.pic);

    after

    holder.textview.setbackgroundresource(r.drawable.list_selector);

  • add

    holder.imageview.setimage(r.drawable.my_drawable);

    after

    holder.textview.settext(str);

change r.drawable.my_drawable custom drawable if needed.


Comments

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

c++ - Correct method for redrawing a layered window -

java.util.scanner - How to read and add only numbers to array from a text file -