仿qq列表滑动效果,适应效果强,可进行自定义或动态调整抽屉内容,操作事件绑定简单。
1、建立列表项Layout文件,基本要求如下(简单举例,详细参考Demo)
< ?xml version="1.0" encoding="utf-8"?>
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android "
android:orientation ="vertical " android:layout_width ="match_parent "
android:layout_height ="match_parent ">
< com .zhangshirong.swipelistview.SwipeListViewScroll
android:layout_width ="match_parent "
android:layout_height ="wrap_content "
>
< LinearLayout
android:clickable ="true "
android:orientation ="horizontal "
android:layout_width ="match_parent "
android:layout_height ="wrap_content ">
<!--第一个是item主要显示的内容-->
< LinearLayout
android:orientation ="vertical "
android:padding ="10dp "
android:layout_width ="match_parent "
android:layout_height ="wrap_content ">
< TextView
android:id ="@+id/name "
android:text ="Hello "
android:gravity ="center_vertical "
android:height ="30dp "
android:textSize ="16dp "
android:layout_width ="match_parent "
android:layout_height ="wrap_content " />
< TextView
android:id ="@+id/desc "
android:text ="Hello "
android:textSize ="14dp "
android:gravity ="center_vertical "
android:height ="20dp "
android:layout_width ="match_parent "
android:layout_height ="wrap_content " />
</ LinearLayout >
<!--按钮显示的内容-->
< LinearLayout
android:layout_width ="wrap_content "
android:orientation ="horizontal "
android:layout_height ="match_parent ">
< Button
android:id ="@+id/modify "
android:text ="Modify "
android:layout_width ="wrap_content "
android:layout_height ="match_parent "/>
< Button
android:id ="@+id/delete "
android:text ="Delete "
android:layout_width ="wrap_content "
android:layout_height ="match_parent "/>
</ LinearLayout >
</ LinearLayout >
</ com .zhangshirong.swipelistview.SwipeListViewScroll>
</ LinearLayout >
2、在Activity Layout里使用SwipeListView
3、SwipeListView使用SetListener进行相关的Item事件和控制按钮事件的注册
listView .setListener (new OnSwipeListItemClickListener () {
@ Override
public void OnClick (View view , int index ) {
//item点击
}
@ Override
public boolean OnLongClick (View view , int index ) {
//item点击长按
}
@ Override
public void OnControlClick (int rid , View view , int index ) {
AlertDialog .Builder ab ;
switch (rid ){
case R .id .modify :
//item点击modify
break ;
case R .id .delete :
//item点击delete
break ;
}
}
},new int []{R .id .modify ,R .id .delete });//按钮view的id
4、设置ListAdapter(继承自SwipeListAdapter)具体使用如下(请参考案例)
class ListAdapter extends com .zhangshirong .swipelistview .SwipeListAdapter {
private ArrayList <Info > listData ;
public ListAdapter (ArrayList <Info > listData ){
this .listData = (ArrayList <Info >) listData .clone ();
}
@ Override
public int getCount () {
return listData .size ();
}
@ Override
public Object getItem (int position ) {
return listData .get (position );
}
@ Override
public long getItemId (int position ) {
return position ;
}
@ Override
public View getView (int position , View convertView , ViewGroup parent ) {
ViewHolder viewHolder = new ViewHolder ();
if (convertView == null ){
convertView = View .inflate (getBaseContext (),R .layout .style_list ,null );
viewHolder .name = (TextView ) convertView .findViewById (R .id .name );
viewHolder .desc = (TextView ) convertView .findViewById (R .id .desc );
viewHolder .modify = (Button ) convertView .findViewById (R .id .modify );
viewHolder .delete = (Button ) convertView .findViewById (R .id .delete );
convertView .setTag (viewHolder );
}
else {
viewHolder = (ViewHolder ) convertView .getTag ();
}
viewHolder .name .setText (listData .get (position ).name );
viewHolder .desc .setText (listData .get (position ).desc );
//注意这里的使用
return super .bindView (position , convertView );
}
}