• Android 实现ListView的滑动删除效果--SwipeListView


    官网地址:https://github.com/47deg/android-swipelistview

    它可以实现ListView的滑动相关的一些效果,例如类似微信 ListView滑动删除效果等等,自己写了一个Demo Mark 一下。

    activity_main.xml

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    2.     xmlns:swipe="http://schemas.android.com/apk/res-auto"  
    3.     android:layout_width="match_parent"  
    4.     android:layout_height="match_parent"  
    5.     android:background="@color/background_app"  
    6.     android:orientation="vertical" >  
    7.   
    8.     <com.fortysevendeg.swipelistview.SwipeListView  
    9.         android:id="@+id/mSwipeListView"  
    10.         android:layout_width="match_parent"  
    11.         android:layout_height="match_parent"  
    12.         android:listSelector="#00000000"  
    13.         swipe:swipeBackView="@+id/back"  
    14.         swipe:swipeCloseAllItemsWhenMoveList="true"  
    15.         swipe:swipeDrawableChecked="@drawable/choice_selected"  
    16.         swipe:swipeDrawableUnchecked="@drawable/choice_unselected"  
    17.         swipe:swipeFrontView="@+id/front"  
    18.         swipe:swipeMode="both" />  
    19.   
    20. </LinearLayout>  



    BookAdapter.java

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.exampleswipelistviewtest.adapter;  
    2.   
    3. import java.util.List;  
    4. import android.content.Context;  
    5. import android.view.LayoutInflater;  
    6. import android.view.View;  
    7. import android.view.ViewGroup;  
    8. import android.widget.BaseAdapter;  
    9. import android.widget.Button;  
    10. import android.widget.ImageView;  
    11. import android.widget.TextView;  
    12. import android.widget.Toast;  
    13. import com.exampleswipelistviewtest.R;  
    14. import com.exampleswipelistviewtest.entity.Book;  
    15. import com.fortysevendeg.swipelistview.SwipeListView;  
    16.   
    17. public class BookAdapter extends BaseAdapter {  
    18.   
    19.     private List<Book> data;  
    20.     private Context context;  
    21.     private LayoutInflater minInflater;  
    22.   
    23.     public BookAdapter(Context context, List<Book> data) {  
    24.         this.context = context;  
    25.         this.data = data;  
    26.           
    27.         minInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
    28.     }  
    29.   
    30.     @Override  
    31.     public int getCount() {  
    32.         return data.size();  
    33.     }  
    34.   
    35.     @Override  
    36.     public Book getItem(int position) {  
    37.         return data.get(position);  
    38.     }  
    39.   
    40.     @Override  
    41.     public long getItemId(int position) {  
    42.         return position;  
    43.     }  
    44.   
    45.     @Override  
    46.     public View getView(final int position, View convertView, ViewGroup parent) {  
    47.         final Book item = getItem(position);  
    48.         ViewHolder holder;  
    49.         if (convertView == null) {  
    50.               
    51.             convertView = minInflater.inflate(R.layout.package_row, parent, false);  
    52.               
    53.             holder = new ViewHolder();  
    54.             holder.ivLogo = (ImageView) convertView.findViewById(R.id.iv_logo);  
    55.             holder.tvTitle = (TextView) convertView.findViewById(R.id.tv_title);  
    56.             holder.tvDescription = (TextView) convertView.findViewById(R.id.tv_description);  
    57.             holder.btDelete = (Button) convertView.findViewById(R.id.bt_delete);  
    58.             holder.btEdit = (Button) convertView.findViewById(R.id.bt_edit);  
    59.               
    60.             convertView.setTag(holder);  
    61.         } else {  
    62.             holder = (ViewHolder) convertView.getTag();  
    63.         }  
    64.   
    65.         ((SwipeListView)parent).recycle(convertView, position);  
    66.   
    67.         holder.ivLogo.setImageResource(item.getLogo());  
    68.         holder.tvTitle.setText(item.getName());  
    69.         holder.tvDescription.setText(item.getDesc());  
    70.   
    71.         holder.btDelete.setOnClickListener(new View.OnClickListener() {  
    72.             @Override  
    73.             public void onClick(View v) {  
    74.                  
    75.                 Toast.makeText(context, R.string.delete, Toast.LENGTH_SHORT).show();  
    76.             }  
    77.         });  
    78.   
    79.         holder.btEdit.setOnClickListener(new View.OnClickListener() {  
    80.             @Override  
    81.             public void onClick(View v) {  
    82.                   
    83.                 Toast.makeText(context, R.string.edit, Toast.LENGTH_SHORT).show();  
    84.             }  
    85.         });  
    86.   
    87.         return convertView;  
    88.     }  
    89.   
    90.     static class ViewHolder {  
    91.         ImageView ivLogo;  
    92.         TextView tvTitle;  
    93.         TextView tvDescription;  
    94.         Button btEdit;  
    95.         Button btDelete;  
    96.     }  
    97.   
    98. }  



    MainActivity.java

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
      1. package com.exampleswipelistviewtest;  
      2.   
      3. import java.util.ArrayList;  
      4. import android.app.Activity;  
      5. import android.os.Bundle;  
      6. import android.util.Log;  
      7. import com.exampleswipelistviewtest.adapter.BookAdapter;  
      8. import com.exampleswipelistviewtest.entity.Book;  
      9. import com.fortysevendeg.swipelistview.BaseSwipeListViewListener;  
      10. import com.fortysevendeg.swipelistview.SwipeListView;  
      11.   
      12. public class MainActivity extends Activity {  
      13.   
      14.     private static final String TAG = MainActivity.class.getSimpleName();  
      15.     private ArrayList<Book> data = new ArrayList<Book>();  
      16.     private BookAdapter mAdapter;  
      17.     private SwipeListView mSwipeListView;  
      18.   
      19.     @Override  
      20.     protected void onCreate(Bundle savedInstanceState) {  
      21.         super.onCreate(savedInstanceState);  
      22.         setContentView(R.layout.activity_main);  
      23.   
      24.         initData();  
      25.         findView();  
      26.     }  
      27.   
      28.     private void initData() {  
      29.           
      30.         for(int i=0;i<20;i++){  
      31.               
      32.             Book book = new Book();  
      33.             book.setLogo(R.drawable.ic_launcher);  
      34.             book.setName("研磨设计模式 "+i);  
      35.             book.setDesc("一本好书 "+i);  
      36.               
      37.             data.add(book);  
      38.         }  
      39.     }  
      40.   
      41.     private void findView() {  
      42.   
      43.         mAdapter = new BookAdapter(this, data);  
      44.   
      45.         mSwipeListView = (SwipeListView) findViewById(R.id.mSwipeListView);  
      46.           
      47.         mSwipeListView.setSwipeListViewListener(new BaseSwipeListViewListener() {  
      48.   
      49.             @Override  
      50.             public void onStartOpen(int position, int action,  
      51.                     boolean right) {  
      52.   
      53.                 Log.d(TAG, "onStartOpen");  
      54.             }  
      55.   
      56.             @Override  
      57.             public void onStartClose(int position, boolean right) {  
      58.   
      59.                 Log.d(TAG, "onStartClose");  
      60.             }  
      61.   
      62.             @Override  
      63.             public void onClickFrontView(int position) {  
      64.   
      65.                 Log.d(TAG, "onClickFrontView");  
      66.             }  
      67.   
      68.             @Override  
      69.             public void onClickBackView(int position) {  
      70.   
      71.                 Log.d(TAG, "onClickBackView");  
      72.             }  
      73.   
      74.             @Override  
      75.             public void onDismiss(int[] reverseSortedPositions) {  
      76.   
      77.                 Log.d(TAG, "onDismiss");  
      78.                 for (int position : reverseSortedPositions) {  
      79.                     data.remove(position);  
      80.                 }  
      81.                 mAdapter.notifyDataSetChanged();  
      82.             }  
      83.         });  
      84.           
      85.         mSwipeListView.setAdapter(mAdapter);  
      86.           
      87.         mSwipeListView.setSwipeMode(SwipeListView.SWIPE_MODE_BOTH);  
      88.         mSwipeListView.setSwipeActionLeft(SwipeListView.SWIPE_ACTION_REVEAL);  
      89.         mSwipeListView.setSwipeActionRight(SwipeListView.SWIPE_ACTION_REVEAL);  
      90.         mSwipeListView.setOffsetLeft(getResources().getDimension(R.dimen.left_offset));  
      91.         mSwipeListView.setOffsetRight(getResources().getDimension(R.dimen.right_offset));  
      92.         mSwipeListView.setAnimationTime(200);  
      93.         mSwipeListView.setSwipeOpenOnLongPress(true);  
      94.     }  
      95.   
      96. }  
  • 相关阅读:
    正则表达式验证手机和邮箱格式
    密码正则表达式
    正则表达式 ?<= 和 ?= 的用法
    无限极分类
    Linux下设置允许myql数据库远程连接
    一种高效的网络服务器设计
    多台计算机之间的ssh无密钥登录
    关于C语言指针的问题
    Windows下svn客户端和服务器的安装使用
    图解向hadoop分布式文件系统写文件的工作流程
  • 原文地址:https://www.cnblogs.com/weixiao870428/p/3524052.html
Copyright © 2020-2023  润新知