viewholder

RecyclerView的简单使用

风格不统一 提交于 2019-12-01 05:07:15
1、RecyclerView RecyclerView也是一种显示数据集的控件,但它比 ListView 和 GridView 强大很多,除了能够完成上面两种控件的功能,还能实现瀑布流的效果,同时支持上拉、下拉刷新。 2、使用方式 引入 RecyclerView 的依赖包 androidx.recyclerview:recyclerview:1.0.0 布局文件中声明一个 RecyclerView 组件 <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content"></androidx.recyclerview.widget.RecyclerView> 在Activity的 onCreate 方法中找到该组件 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到RecyclerView recyclerView =

获取多张本地图片,以及显示图片

给你一囗甜甜゛ 提交于 2019-12-01 04:55:10
先看获取多张本地图片的效果图: 然后加入权限: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA"/> 加入依赖: implementation 'com.github.open-android:ImageSelector:0.1.0' 给布局文件加一个选择图片的按钮,以及显示图片路径的文本: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http:/

Android中ListView的使用

痴心易碎 提交于 2019-12-01 02:52:42
1、主要概念 ListView 用于将大数据集以列表的形式展示。 ListView 可以看成一个容器,它有如下继承链: View <- ViewGroup <- AdapterView <- AbsListView <- ListView 可见 ListView 继承自 AdapterView , 而 AdapterView 的作用就是为 ListView 提供数据。 主要的API: listView.setAdapter(adapter实例) 我们通常用的 Adapter 有如下几个: BaseAdapter , CursorAdapter , ArrayAdapter , SimpleAdapter .它们有如下的继承关系: Adapter <- ListAdapter <- BaseAdapter SimpleAdapter 、 CursorAdapter 和 ArrayAdapter 都是 BaseAdapter 的子类。 2、使用方法 在 Activity 布局文件中加入一个 ListView 组件 <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@array/listItems"></ListView> 这里

自定义控件三部曲视图篇(四)——RecyclerView系列之一简单使用

走远了吗. 提交于 2019-11-29 04:02:07
绝望的时候不要那么绝望,高兴的时候不要那么高兴,是你慢慢会学会的。 ——董卿 系列文章: Android自定义控件三部曲文章索引: http://blog.csdn.net/harvic880925/article/details/50995268 转了一年多,又回来继续做Android。果然还是看到代码最让我兴奋……但有些事,没经历过,总归还是遗憾的。在VIVO的游戏中心,有一个特别炫酷的功能: 这个功能就是使用RecyclerView来实现的,在本系列中,我们将最终制作出这样的一个效果出来。 一、导入Support-v7包 工欲善其事必先利其器,RecyclerView存在于support-v7包中,我们需要在新建的gradle工程中导入support-v7包: compile 'com.android.support:recyclerview-v7:21.0.3' gralde 版本较高的同学,会发现compile关键字这里会报警告,在高版本gradle中compile已经弃用了,改成了implementation,所以你可以改为: implementation 'com.android.support:recyclerview-v7:21.0.3' 加上上面的依赖代码以后,会发现根本不好使,依赖库根本拉不下来。这是为什么呢? support

左右联动

社会主义新天地 提交于 2019-11-29 00:33:51
效果图: 1. 左边列表适配器代码(TypeAdapter) 2. 左边列表对应的布局文件(item_type_goods.xml) 3. 右边列表适配器代码(SelectAdapter) 4. 右边列表对应的布局文件(item_select_goods.xml) 5. 实体类(MyContent) 6. MainActivity的主页代码 7. MainActivity的布局文件 8. 附上图片 左边列表适配器代码(TypeAdapter): package com.example.recycleview; import android.content.Context; import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.List; public class TypeAdapter extends BaseAdapter { private List<String> goodsList; private Context

ListView详细介绍与使用

与世无争的帅哥 提交于 2019-11-28 18:22:52
前言介绍: 关于 ListView 我们大家都应该是非常的熟悉了,在 Android 开发中是经常用到的,今天就再来回顾一下, ListView 的使用方法,和一些需要优化注意的地方,还有日常开发过程中的一些小技巧和经验。 ListView 简介 ListView 是 Android 系统为我们提供的一种列表显示的一种控件,使用它可以用来显示我们常见的列表形式。继承自抽象类 AdapterView 。 类的关系图: 表现形式 这就是一种最简单的 ListView 的表现形式,黑色框就是 ListView 控件,其中由一个个的 item 组成(红色框内容),然后可以通过向下滑动来查看很多的条目。 工作原理 ListView 仅是作为容器(列表),用于装载显示数据(就是上面的一个个的红色框的内容,也称为 item)。item 中的具体数据是由适配器(adapter)来提供的。 适配器(adapter):作为 View (不仅仅指的 ListView)和数据之间的桥梁或者中介,将数据映射到要展示的 View 中。这就是最简单适配器模式,也是适配器的主要作用! 当需要显示数据的时候,ListView 会从适配器(Adapter)中取出数据,然后来加载数据。 ListView 负责以列表的形式向我们展示 Adapter 提供的内容 缓存原理 前面讲了 ListView 负责把 Adapter

Android进阶之绘制-自定义View完全掌握(三)

て烟熏妆下的殇ゞ 提交于 2019-11-28 15:08:21
自定义View系列的第三篇博客,我们来学习如何实现自定义下拉框。 今天的程序,我们来实现这样的一个效果。 布局非常简单,我们直接开始编码。 修改activity_main.xml文件的代码。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" tools:context="com.itcast.test0430.MainActivity"> <EditText android:id="@+id/et_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="middle" android:hint="请输入内容..." android

RecyclerView缓存原理

心不动则不痛 提交于 2019-11-28 07:11:48
RecyclerView缓存机制 1. RecyclerView缓存机制与性能优化关系 RecyclerView做性能优化要说复杂也复杂,比如说布局优化,缓存,预加载等等。其优化的点很多,在这些看似独立的点之间,其实存在一个枢纽:Adapter。因为所有的ViewHolder的创建和内容的绑定都需要经过Adaper的两个函数 onCreateViewHolder和onBindViewHolder 。 因此我们性能优化的本质就是要 减少这两个函数的调用时间和调用的次数 。如果我们想对RecyclerView做性能优化,必须清楚的了解到我们的每一步操作背后,onCreateViewHolder和onBindViewHolder调用了多少次。因此,了解RecyclerView的缓存机制是RecyclerView性能优化的基础。 为了理解缓存的应用场景,本文首先会简单介绍一下RecyclerView的绘制原理,然后再分析其缓存实现原理。 2. 绘制原理简述 2.1 假设 为了简化问题,绘制原理介绍提供以下假设: RecyclerView 以LinearLayoutManager为例 忽略ItemDecoration 忽略ItemAnimator 忽略Measure过程 假设RecyclerView的width和height是确定的 Recycler

RecyclerView 缓存机制详解

一世执手 提交于 2019-11-28 07:06:15
一 前言 RecyclerView据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView、GridView。RecyclerView可以用来代替传统的ListView,GridView,更加强大和灵活。RecyclerView的使用网上有非常多案例,这里就不多说了,我们今天主要来看看RecyclerView 的缓存机制。 二 缓存机制Recycler详解 Recycler是RecyclerView的一个内部类。我们来看一下它的主要的成员变量。 mChangedScrap 表示数据已经改变的ewHolder列表 mAttachedScrap 未与RecyclerView分离的ViewHolder列表 mCachedViews ViewHolder缓存列表,其大小由mViewCacheMax决定,默认DEFAULT_CACHE_SIZE为2,可动态设置。 mViewCacheExtension 开发者可自定义的一层缓存,是虚拟类ViewCacheExtension的一个实例,开发者可实现方法getViewForPositionAndType(Recycler recycler, int position, int type)来实现自己的缓存。 mRecyclerPool ViewHolder缓存池

Android 小项目之--使用【AudioManager】类控制音量(2)

落花浮王杯 提交于 2019-11-27 06:52:56
一个好的 Android 应用免不了会自带背景音乐,比如游戏或者一款比较不错的书本阅读器。一些好的应用在自带音乐的时候会多添加一款小功能即可以帮助用户设置声音大小或者改变应用的声音模式。 本篇基于 Android API 中的 AudioManager 作讲述,使看过本篇的读者可以迅速的掌握这个类的实现过程。下面是本篇大纲: 1、认识 AudioManager 2、AudioManager 主要方法介绍 3、程序逻辑实现过程 1、认识 AudioManager AudioManager 类位于 android.Media 包中,该类提供访问控制音量和钤声模式的操作。 2、AudioManager 主要方法介绍 邮于 AudioManager 该类方法过多,这里只讲述几个比较常用到的方法: 方法:adjustVolume(int direction, int flags) 解释:这个方法用来控制手机音量大小,当传入的第一个参数为 AudioManager.ADJUST_LOWER 时,可将音量调小一个单位,传入 AudioManager.ADJUST_RAISE 时,则可以将音量调大一个单位。 方法:getMode() 解释:返回当前音频模式。 方法:getRingerMode() 解释:返回当前的铃声模式。 方法:getStreamVolume(int streamType) 解释