安卓 日常问题 工作日志6

adapter 用自己定义的 image 讲解

package com.zsch.forestinventory.adapter;

import android.content.Context;import android.net.Uri;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageButton;import android.widget.ImageView;

import com.bumptech.glide.Glide;import com.zsch.forestinventory.R;

import java.util.List;

/** * Created by 11827 on 2017/8/7. * 显示照片的适配器 */
//ImageAdapter extends RecyclerView.Adapter 需要 重写3个方法下面有详解
public class ImageAdapter extends RecyclerView.Adapter implements View.OnClickListener, View.OnLongClickListener {    private OnItemLongClickListener onItemLongClickListener;    private OnItemClickListener onItemClickListener;    private OnItemMapClickListener onItemMapClickListener; //新建平面图的事件监听

    private Context mContext;    private LayoutInflater inflater; //当XML布局资源被解析并转换成View对象时会用到。    private List<Uri> uris;    private int imageWidth;

    private boolean isShowDeleteBtn = false;

    public ImageAdapter(Context mContext, List<Uri> uris, int screenWidth, int cols) {        this.mContext = mContext;        inflater = LayoutInflater.from(mContext);        this.uris = uris;        imageWidth = screenWidth/cols;        imageWidth-=imageWidth/10;    }

    @Override   //RecyclerViewAdapter.class :继承RecyclerView.Adapter后,会重写三个方法:1.onCreateViewHolder2.onBindViewHolder3.getItemCount    //onCreateViewHolder():负责承载每个子项的布局。它有两个参数,其中一个是“ int viewType”。    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        ViewHolder holder = new ViewHolder(inflater.inflate(R.layout.item_image, null));        return holder;   //代表所有控件    }

    @Override  //    //1.第一种点击事件写法 根据点击位置绑定数据  在 Adapter 里面直接对控件做点击事件    //负责将每个子项holder绑定数据    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        ViewHolder mHolder = (ViewHolder) holder; //为的是listview滚动的时候快速设置值,而不必每次都重新创建很多对象,从而提升性能        mHolder.itemView.setTag(mHolder);//Android开发的view中已经有api接口可以完成一定量数据的存储  View.setTag()以及View.getTag()  setTag()使用的最多的场景基本就是ListView,GridView,RecycleView        mHolder.itemView.setOnClickListener(this);        mHolder.itemView.setOnLongClickListener(this);        mHolder.ib.setTag(mHolder);        mHolder.ib.setOnClickListener(this);  //    holder.控件名.setOnClickListener(        if (isShowDeleteBtn) {  //进行删除按钮的展示 或隐藏            mHolder.ib.setVisibility(View.VISIBLE); //View类的setVisibility()方法设置是否显示组件    View.VISIBLE:组件正常显示        } else {            mHolder.ib.setVisibility(View.INVISIBLE); //View.INVISIBLE:组件看不到,但占据着布局空间。        }        Glide.with(mContext)                .load(uris.get(position))  //资源的位置                .asBitmap() //只加载静态图片,如果是git图片则只加载第一帧。                .placeholder(R.mipmap.ic_place_holder)//加载带有占位图  占位图目的为在目的图片还未加载出来的时候,提前展示给用户的一张图片                .error(R.mipmap.ic_place_holder)//加载失败 放置占位符                //.asGif()//加载动态图片,若现有图片为非gif图片,则直接加载错误占位图。                .override(imageWidth*3, imageWidth*2) //指定图片大小   宽再宽点 长再长点  (width,height)                .centerCrop()                .into(mHolder.iv); //将数据加载到哪    }

    public void setShowDeleteBtn(boolean isShowCheckBox) {        this.isShowDeleteBtn = isShowCheckBox;    }

    public boolean isShowDeleteBtn() {        return isShowDeleteBtn;    }

    @Override    //得到总条数    public int getItemCount() {        return uris.size();    }

    @Override    public void onClick(View view) {        //第一次创建itemView的时候,完成对控件的绑定,同时吧控件作为一个object--holder,把它通过setTag()存到itemView中,        // 再第二次使用的时候就可以通过getTag()  把holder取出来直接使用        //list中itemView相同的情况下,我们只进行了一次的控件资源绑定        ViewHolder holder = (ViewHolder) view.getTag();        if (onItemClickListener != null) { //点击的是照片            switch (view.getId()) {                case R.id.imageItem: //点击放大                    onItemClickListener.onItemClick(this, holder, holder.getAdapterPosition(), holder.getItemId());                    break;                case R.id.ib:  //删除                    onItemClickListener.onItemButtonClick(this, holder, holder.getAdapterPosition(), holder.getItemId());                    break;            }        }else if(onItemMapClickListener != null){ //点击的是平面图            switch (view.getId()) {                case R.id.imageItem: //点击放大                    onItemMapClickListener.onItemMapClick(this, holder, holder.getAdapterPosition(), holder.getItemId());                    break;                case R.id.ib:  //删除                    onItemMapClickListener.onItemButtonMapClick(this, holder, holder.getAdapterPosition(), holder.getItemId());                    break;            }        }

    }

    @Override    public boolean onLongClick(View view) {        ViewHolder holder = (ViewHolder) view.getTag();        if (onItemLongClickListener != null) {            return onItemLongClickListener.onItemLongClick(this, holder, holder.getAdapterPosition(), holder.getItemId());        }        return false;    }

    //自定义viewhodler   算是 自定义 内部类    public class ViewHolder extends RecyclerView.ViewHolder {        public ImageView iv;        public ImageButton ib;

        public ViewHolder(View itemView) {            super(itemView);            iv = (ImageView) itemView.findViewById(R.id.iv);            ib = (ImageButton) itemView.findViewById(R.id.ib);        }    }

    public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) {        this.onItemLongClickListener = onItemLongClickListener;    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {        this.onItemClickListener = onItemClickListener;    }

    public void setOnItemMapClickListener(OnItemMapClickListener onItemMapClickListener) {        this.onItemMapClickListener = onItemMapClickListener;    }

    //1.第二种点击事件写法 在 Adapter 里写接口    public interface OnItemLongClickListener {        boolean onItemLongClick(ImageAdapter adapter, ViewHolder holder, int position, long id);    }

    public interface OnItemClickListener {        void onItemClick(ImageAdapter adapter, ViewHolder holder, int position, long id); //点击单张

        void onItemButtonClick(ImageAdapter adapter, ViewHolder holder, int position, long id); ///删除照片

    }    //新增平面图的点击 删除事件    public interface OnItemMapClickListener {        void onItemMapClick(ImageAdapter adapter, ViewHolder holder, int position, long id);//点击单张

        void onItemButtonMapClick(ImageAdapter adapter, ViewHolder holder, int position, long id);///删除照片

    }

}

原文地址:https://www.cnblogs.com/dushutai/p/12625854.html

时间: 2024-10-09 06:13:15

安卓 日常问题 工作日志6的相关文章

安卓 日常问题 工作日志

安卓中 常用的 权限   AndroidManifest.xml文件中 首先 我建议大家 有机会 还是优先去考虑 大厂 去实习或者 找到 自己的第一份工作 以为 大厂你会接触到 当前比较流行的 框架 插件 编程是越来越简单 越来越 容易理解的 老东西会被淘汰 当然 原理我们一定要懂 有机会 要看下 源码 去理解源码 <uses-permission android:name="android.permission.INTERNET" /> <!-- 获取sd卡写的权限

安卓 日常问题 工作日志23

谈一谈安卓的相对布局 之前只会使用·线性布局 所以要多学一个 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="f

安卓 日常问题 工作日志10

android 拍摄视频 拍摄照片的 流程    https://www.cnblogs.com/younghao/p/5089118.html,https://www.jianshu.com/p/e5312fd916dd?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 代码 package com.zsch.forestinventory.activity

安卓 日常问题 工作日志18

今天 学习 android多线程  atomininteger内存模型  以及自己项目的 视频播放功能 目前 对于android一些知识点 大家可以 去看今日头条的 android进阶小刘  这个博主 讲得很好 atomininteger内存模型 是啥 https://blog.csdn.net/fanrenxiang/article/details/80623884  没看懂 https://www.cnblogs.com/nightOfStreet/articles/11887169.htm

点晴OA的工作日志、工作报告、工作计划强强联手提高效率

一个企业看他能不能在众多的同行中脱颖而出,关键是需要看他是如果管理好他的员工,如何清楚的知道他们的员工每天做什么工作,而且帮助他们解决问题和提高工作效率. 我们就说一下一个比较实际的能够提高工作效率的点晴OA功能模块:工作日志.工作报告和工作计划. 工作日志:用于员工每天记录工作内容的管理.在点晴OA系统的工作日志中,直属领导可以事先为下属设计相关的工作日志模版,然后员工每天按照工作日志模版的内容进行工作反馈.企业主管.部门主管的一项重要工作就是全面地阅读员工工作日志,老板的一项重要工作也是抽样

服务器日常维护工作流程

服务器管理工作必须规范严谨,尤其在不是只有一位管理员的时候,日常管理工作包括: 1.服务器的定时重启.每台服务器保证每周重新启动一次.重新启动之后要进行复查,确认服务器已经启动了,确认服务器上的各项服务均恢复正常.对 于没有启动起来或服务未能及时恢复的情况要采取相应措施.前者可请求托管商的相关工作人员帮忙手工重新启动,必要时可要求让连接上显示器确认是否已启动起 来:后者需要远程登陆上服务器进行原查找并根据原因尝试恢复服务. 2.服务器的安全.性能检查,每服务器至少保证每周登陆两次粗略检查两次.每

工作日志2014-07-04

6:00起床 7:10坐上校车13.6元 8:15到公司 12:00煎饼果子5元 工作时间: 设置界面 工作日志2014-07-04,布布扣,bubuko.com

工作日志2014-07-10

5:00起床 6:00吃早饭4元 7:30到公司1元 12:00吃饭8元 工作时间: 1.动态评论功能和评论显示画面: 2.多媒体作业: 3.活动: 工作日志2014-07-10,布布扣,bubuko.com

工作日志2014-07-02

星期三 6:30起床 7:30坐上车 8:00开始往大连走 8:50到七贤岭30元 12:00吃饭8元 18:00等车 19:30到校25元 20:00吃晚饭8.5元 工作时间: 百度云推送(结合官网的Demo和文档,有一点了解) 问潘美德有关文档的问题,但是没有很好解决 今天支出71.5元 工作日志2014-07-02,布布扣,bubuko.com