@TOC

一、RecyclerView(侧滑删除)

1.SwipeLayout概念:可以支持侧滑的布局控件

常用方法
设置侧滑方式 :setMoe(SwipeLayout.show.PULLOUT)
setMoe(SwipeLayout.show.LAYDOUN)
打开 :openItem(下标)
关闭 :closeItem(下标)
判断是否打开 :isopen(下标)
获得所有已经打开的条目:getopenItem()
注意事项:
1.要写在布局的位置,替换线性或相对布局
2.SwipeLayout嵌套两个子布局,第一个显示在屏幕外,第二个显示内容
3.继承RecyclerSwipeAdapter这个类
效果图

2.代码实例

//主布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="wrap_content"tools:context="com.bw.day17.Main17Activity"><android.support.v7.widget.RecyclerViewandroid:id="@+id/mrecycleView"android:layout_width="match_parent"android:layout_height="match_parent"></android.support.v7.widget.RecyclerView></LinearLayout>
//行布局
<?xml version="1.0" encoding="utf-8"?>
<com.daimajia.swipe.SwipeLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/swipe_layout"><LinearLayoutandroid:background="#66ddff00"android:id="@+id/bottom_wrapper"android:layout_width="160dp"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/bottom"android:text="删除"android:layout_width="match_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/bottom1"android:text="收藏"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout><LinearLayoutandroid:padding="10dp"android:background="#ffffff"android:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/surface"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout></com.daimajia.swipe.SwipeLayout>
package com.bw.day17;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;import java.util.ArrayList;
import java.util.List;import day01.bw.com.myapplication.R;public class Main17Activity extends AppCompatActivity {private RecyclerView mrecycleView;private List<String> list;private MyRecyclerViewAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main17);mrecycleView=findViewById(R.id.mrecycleView);list=new ArrayList<String>();for(int i=0;i<9;i++){list.add("条目"+i);}adapter=new MyRecyclerViewAdapter(this,list);mrecycleView.setLayoutManager(new LinearLayoutManager(this));mrecycleView.setAdapter(adapter);}
}
package com.bw.day17;import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.adapters.RecyclerSwipeAdapter;import java.util.List;import day01.bw.com.myapplication.R;public class MyRecyclerViewAdapter extends RecyclerSwipeAdapter<MyRecyclerViewAdapter.MyViewHolder> {private Context context;private List<String> list;public MyRecyclerViewAdapter(Context context,List<String> list){this.context=context;this.list=list;}@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(context).inflate(R.layout.zuohua_item,parent,false);return new MyViewHolder(view);}@Overridepublic void onBindViewHolder(MyViewHolder viewHolder,final int position) {viewHolder.swipeLayout.setShowMode(SwipeLayout.ShowMode.LayDown);viewHolder.surface.setText(list.get(position));viewHolder.bottom.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {list.remove(position);notifyDataSetChanged();}});}@Overridepublic int getItemCount() {return list.size();}@Overridepublic int getSwipeLayoutResourceId(int position) {return position;}class MyViewHolder extends RecyclerView.ViewHolder {private SwipeLayout swipeLayout;private Button bottom;private TextView surface;public MyViewHolder(View itemView) {super(itemView);swipeLayout = itemView.findViewById(R.id.swipe_layout);bottom = itemView.findViewById(R.id.bottom);surface = itemView.findViewById(R.id.surface);}}
}

一、RecyclerView(侧滑删除)

效果图

package bw.com.breakpointresume;import android.os.AsyncTask;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.concurrent.ExecutionException;/*** 指定位置的下载** 2.显示下载进度  总长度 当前进度** 3.分批写入文件* */
public class MainActivity extends AppCompatActivity {long start = 0;long end  = 1024*1024;//要下载多少int max;//给总进度Button start_btn;Button pare_btn;Button button;ProgressBar progressBar;TextView textView;int time = 1;//第几次下载,一共下载5次boolean flag = false;int sum = 0;int num = 0;Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if (msg.what == 100 && msg.obj!= null){if (time < num){new LoadFileThread().start();progressBar.setProgress((int) end);time++;}else {//不下了发了一个空消息handler.sendEmptyMessage(200);progressBar.setProgress(max);}textView.setText(msg.obj.toString());Log.e("@@@",msg.obj.toString());}else if (msg.what == 200){textView.setText("下载完成");}else if (msg.what == 300){progressBar.setProgress(msg.arg1);}}};Handler handler2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);start_btn = findViewById(R.id.button_start);pare_btn = findViewById(R.id.button_parse);button = findViewById(R.id.start_btn);progressBar = findViewById(R.id.pb);try {max = new MyThread().execute("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4").get();num = (int) (max/end);progressBar.setMax(max);} catch (ExecutionException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}textView = findViewById(R.id.tv);start_btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new LoadFileThread().start();}});//暂停pare_btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {flag = true;Message message = Message.obtain();message.obj = flag;handler2.sendMessage(message);}});button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {flag = false;Message message = Message.obtain();message.obj = flag;handler2.sendMessage(message);}});}class MyThread extends AsyncTask<String,String, Integer> {@Overrideprotected Integer doInBackground(String... strings) {try {URL url = new URL(strings[0]);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();if (httpURLConnection.getResponseCode() == 200){return httpURLConnection.getContentLength();}} catch (Exception e) {e.printStackTrace();}return null;}}class LoadFileThread extends Thread{@Overridepublic void run() {super.run();Looper.prepare();//开启RandomAccessFile randomAccessFile = null;InputStream is = null;try {URL url = new URL("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4");HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setRequestMethod("GET");httpURLConnection.setDoInput(true);httpURLConnection.setDoOutput(true);//存文件的位置String path = "";if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){path = Environment.getExternalStorageDirectory().getPath()+"/test.mp4";}randomAccessFile = new RandomAccessFile(path,"rw");randomAccessFile.seek(start);httpURLConnection.setRequestProperty("Range","bytes="+start+"-"+end);if (httpURLConnection.getResponseCode() == 206){Log.e("###","来了老弟");
//                    max = httpURLConnection.getContentLength();//总长度   Range byte = 0-1024*1024
//                    Log.e("MAX",max+"");
//                    progressBar.setMax(max);is = httpURLConnection.getInputStream();byte[] bytes = new byte[1024];int len = 0;while ((len = is.read(bytes))!=-1){randomAccessFile.write(bytes,0,len);}sum+=len;}//从上次结束的位置+1开始读start = end+1;end += 1024*1024;handler2 = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);boolean flag = Boolean.parseBoolean(msg.obj.toString());if (flag){Message message = Message.obtain();message.what = 300;message.arg1 = (int) end;handler.sendMessage(message);}else {Log.e("start",start+"");Log.e("end",end+"");Message message = Message.obtain();message.what = 100;//编号message.obj = "文件第"+time+"次下载成功:"+start+"-"+end;message.arg1 = (int) start;handler.sendMessage(message);}}};Log.e("start",start+"");Log.e("end",end+"");Message message = Message.obtain();message.what = 100;//编号message.obj = "文件第"+time+"次下载成功:"+start+"-"+end;message.arg1 = (int) start;handler.sendMessage(message);} catch (Exception e) {e.printStackTrace();}finally {if (randomAccessFile != null){try {randomAccessFile.close();} catch (IOException e) {e.printStackTrace();}}if (is != null){try {is.close();} catch (IOException e) {e.printStackTrace();}}}Looper.loop();}}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><ProgressBarandroid:id="@+id/pb"android:layout_width="match_parent"android:layout_height="30dp"style="@android:style/Widget.ProgressBar.Horizontal"/><Buttonandroid:id="@+id/button_start"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="开始下载"/><Buttonandroid:id="@+id/button_parse"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="暂停下载"/><Buttonandroid:id="@+id/start_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="继续下载"/><TextViewandroid:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20dp"/>
</LinearLayout>

RecyclerView(侧滑删除)和下载文件相关推荐

  1. Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper

    RecyclerView这个被誉为ListView和GirdView的替代品,它的用法在之前的一篇博文中就已经讲过了,今天我们就来实现RecyclerView的侧滑删除和长按拖拽功能,实现这两个功能我 ...

  2. android.support.v7 fragme,打造最强RecyclerView侧滑菜单,长按拖拽Item,滑动删除Item

    前几天写了一片关于RecyclerView滑动删除Item,RecyclerView长按拖拽Item的博客,本来很简单一个使用,阅读量还挺高的,原博客传送门. 今天介绍一个RecyclerView I ...

  3. php 删除上传文件,php实现文件上传、下载和删除的方法

    这篇文章主要为大家详细介绍了php文件上传.下载和删除示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 php文件上传.下载和删除示例大体思路如下,具体内容如下 一.文件上传 1.把上传文件的区 ...

  4. c#ftp操作全解:创建删除目录,上传下载文件,删除移动文件,文件改名,文件目录查询

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 c#实现ftp的操作.包括创建删除目录,上传下载文件,删除移动文件,文件改名,文件目录查询. 在调试ftp前,需要在目标主机上开启ftp功能.这里在本 ...

  5. android allapp图标拖动,RecyclerView 拖拽移动,长按小图标拖拽,侧滑删除

    RecyclerView拖拽移动,长按小图标拖拽,侧滑删除 长按小图标拖拽.gif 侧滑删除.gif Android RecyclerView出来也很多年了,是非常成熟的控件,Github上工具一堆, ...

  6. mac怎么删除下载文件及MAC电脑浏览器如何清除缓存?

    很多用户在浏览器下载了很多文件,可能只打开过一次就再也没有使用过,也不知道怎么删除,等存储空间不够了才想起删除下载文件或者清理浏览器缓存.今天小编就来教大家mac怎么删除下载的文件,以及macbook ...

  7. Android之侧滑删除RecyclerView

    前段时间做项目,有一个需求是需要做一个侧滑删除的功能. 之前由于项目赶的比较紧,所以一起工作的小伙伴用了第三方的,自己想想,这个应该不难实现. 废话不多说,先上效果图 今天权当做下笔记,这篇文章主要参 ...

  8. DaisyDisk for Mac 4.6.1 中文破解版下载 查找删除无用的文件

    通过交互式的图形显示直观地查看磁盘的使用情况,DaisyDisk for Mac 帮助您发掘占用空间的垃圾文件,只要简单的拖拽操作就可以直接删除它们.发现并清理隐藏在 Mac 上 "其他&q ...

  9. 用python重复下载文件_python删除本地夹里重复文件的方法

    上次的博文主要说了从网上下载图片,于是我把整个笑话网站的图片都拔下来了,但是在拔取的图片中有很多重复的,比如说页面的其他图片.重复发布的图片等等.所以我又找了python的一些方法,写了一个脚本可以删 ...

最新文章

  1. 异步IO(协程,消息循环队列)
  2. 自己写的一个启动JBoss服务器的bat批处理
  3. 在wamp 2.0环境下面安装Zend Optimizer的方法
  4. wxWidgets:编写一个应用程序 - 添加一个按钮
  5. 处理字符串_3_处理含引号的字符串
  6. html自定义列表第三层嵌套,【微信小程序】关于微信小程序多层嵌套渲染列表以及嵌套列表中数据的获取...
  7. CF626F. Bear and Fair Set
  8. c语言中if和goto的用法,C语言中if和goto的用法.doc
  9. LeetCode 483. 最小好进制(二分查找)
  10. Win7旗舰版系统时间不准确怎么办
  11. 原 jQuery基础修炼圣典—DOM篇
  12. 技工学校计算机类论文,技工学校计算机教学论文
  13. Java中的泛型全解析(一)
  14. ubuntu下环境变量详解 bashrc, profile, environment
  15. R语言(一):Mac系统M1芯片下安装R语言和RStudio教程,R语言入门
  16. 如何在WordPress中使用SEO写作助手来改善SEO
  17. C++后台开发学习路线
  18. 百度网盘目录搜索引擎上线了 百度网盘目录搭建系统
  19. 1160. 不容易系列之二
  20. webRTC中语音降噪模块ANS细节详解(三)

热门文章

  1. 如何培养自己的赚钱能力
  2. 报错:Collecting package metadata (current_repodata.json): failed
  3. QT: 为自己的QT程序添加一个登录界面
  4. 利用DOCX文档远程模板注入执行宏代码
  5. ggalluvial | 冲击图/ 桑基图绘制
  6. 如何解决Kettle读取txt文件时出现的中文乱码问题?
  7. 驭梦KTV点歌系统简介
  8. 怎么修改背景图片大小的HTML代码,css如何改变背景图片大小?
  9. 【云周刊】第209期:Perseus(擎天):统一深度学习分布式通信框架 [弹性人工智能]...
  10. 威联通NAS TS-453Bmini配置docker.redis5.0.5自动加载配置