How to present a different menu for different list items, this article introduces the Android imitation micro-letter or QQ slide pop-up edit, delete menu effect, increase Drop-down refresh functions such as the realization, share for everyone reference, specific content as follows
Effect Chart:
1. Download the Open source project and import the liberary into your project:
2. Use Swipemenulistview instead of ListView, layout in the page:
<android.support.v4.widget.swiperefreshlayout
android:id= "@+id/swiperefreshmusic"
android:layout_ Width= "Match_parent"
android:layout_height= "wrap_content" >
< Com.baoyz.swipemenulistview.SwipeMenuListView
android:id= "@+id/listviewmusic"
android:layout_width= " Match_parent "
android:layout_height=" match_parent "/>
</ Android.support.v4.widget.swiperefreshlayout>
Note: The main purpose of the swiperefreshlayout is to add drop-down refresh function to the list!
3. Creating adapters for the ListView is not the same as a normal implementation:
public class Musicadapter extends Baseadapter {private list<music> mdatas;
Private context Mcontext;
Public Musicadapter (list<music> mdatas, context mcontext) {this.mdatas = Mdatas;
This.mcontext = Mcontext;
@Override public int GetCount () {return mdatas.size ();
@Override public Music getitem (int position) {return mdatas.get (position);
@Override public long getitemid (int position) {return position;
@Override public View getview (int position, View Convertview, ViewGroup parent) {if (Convertview = null) {
Convertview = View.inflate (mcontext, r.layout.list_item_music, NULL);
New Viewholder (Convertview);
} Viewholder holder = (viewholder) convertview.gettag ();
Music music = mdatas.get (position);
Holder.textTitle.setText (Music.title);
Holder.textDesc.setText (MUSIC.DESC);
return convertview;
Class Viewholder {TextView texttitle;
TextView Textdesc; PuBlic viewholder (view view) {Texttitle = (TextView) View.findviewbyid (r.id.texttitle);
Textdesc = (TextView) View.findviewbyid (R.ID.TEXTDESC);
View.settag (this);
}
}
}
4. Implement adapter for Swipemenulistview, and after that, create a sliding menu:
public class Mainactivity extends Appcompatactivity {@ViewInject (r.id.listviewmusic) Private Swipemenulistview lis
Tviewmusic;
@ViewInject (r.id.swiperefreshmusic) private swiperefreshlayout swiperefreshmusic;
Private list<music> musics;
Private Musicadapter Musicadapter;
@Override protected void OnCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate);
Setcontentview (R.layout.activity_main);
X.view (). inject (this);
musics = new arraylist<> ();
for (int i = 0; i < 4; i++) {Music music = new Music ();
Music.title = "Upper Evil:" + i;
Music.desc = "I want to have a friend with you, a long and no failure";
Musics.add (music);
} musicadapter = new Musicadapter (musics, this);
Listviewmusic.setadapter (Musicadapter); Swipemenucreator swipemenucreator = new Swipemenucreator () {@Override public void Create (Swipemenu menu) {/ /create "edit" item Swipemenuitem EditItem = new Swipemenuitem (Getapplicationcontext ());
Set Item background edititem.setbackground (New Colordrawable (Color.rgb (0xc9, 0xc9, 0xCE));
Set Item width edititem.setwidth (dp2px (90));
Set Item title Edititem.settitle ("edit");
Set Item title FontSize edititem.settitlesize (18);
Set Item title Font Color Edititem.settitlecolor (color.white);
Add to Menu Menu.addmenuitem (EditItem);
Create "edit" item Swipemenuitem DeleteItem = new Swipemenuitem (Getapplicationcontext ());
Set Item background deleteitem.setbackground (new colordrawable Color.parsecolor ("#ff0000"));
Set Item width deleteitem.setwidth (dp2px (90));
Set Item title deleteitem.settitle ("delete");
Set Item title FontSize deleteitem.settitlesize (18);
Set Item title Font Color Deleteitem.settitlecolor (color.white);
Add to Menu Menu.addmenuitem (DeleteItem);
}
}; Listviewmusic.setmenucreator (SWipemenucreator); Listviewmusic.setonmenuitemclicklistener (New Swipemenulistview.onmenuitemclicklistener () {@Override public Boolea
n Onmenuitemclick (int position, swipemenu menu, int index) {switch (index) {//index is the Order of Action menu add case 0:
Toast.maketext (Mainactivity.this, "edit:" + position, Toast.length_short). Show ();
Break
Case 1:toast.maketext (mainactivity.this, "delete:" + position, Toast.length_short). Show ();
Musics.remove (position);
Musicadapter.notifydatasetchanged ();
Break
return false;
}
}); Swiperefreshmusic.setonrefreshlistener (New Swiperefreshlayout.onrefreshlistener () {@Override public void onrefres
H () {swiperefreshmusic.setrefreshing (true); New Handler (). postdelayed (New Runnable () {@Override public void run () {for (int i = 0; i < 4; i+
+) {Music music = new Music ();
Music.title = "Missed:" + i; Music.desc = "The Wind and rain in the mountains of the lone Jade, the world heart Sigh missed";
Musics.add (music);
} musicadapter.notifydatasetchanged ();
Swiperefreshmusic.setrefreshing (FALSE);
}, 2000);
}
}); private int dp2px (int dp) {return (int) typedvalue.applydimension (Typedvalue.complex_unit_dip, DP, Getresou
RCEs (). Getdisplaymetrics ());
}
}
Note:
1. Swipemenucreator is to create a menu for the ListItem, you need to implement the creation method in the interface, in this method, you can freely create menu items, such as delete, edit, you can set the background color of the menu, font color size, etc.;
2. After creating the Swipemenucreator instance, you need to set the menu for the list: Listviewmusic.setmenucreator (swipemenucreator);
3. By setting the Swipemenulistview Setonmenuitemclicklistener method, listen to the click events on the menu, through Onmenuitemclick (int position, swipemenu menu, int Index) method to handle the menu event;
4. By setting the Swipemenulistview Setonrefreshlistener method, add the Drop-down Refresh function to the menu!
This article has been organized into the "Android micro-credit Development tutorial Summary," Welcome to learn to read.
So, it can be the perfect implementation of the list item slide edit delete function, I hope you like.