RecycleView

RecycleView嵌套RecycleView列表垂直滑动冲突 项目需求 主活动视图上拉显示子活动视图列表,子活动视图列表可以上下滑动,下拉可以显示主活动视图列表。看正确效果图 遇到的问题 开发过程中首先要考虑这样的一个实现效果用什么实现?浮现在大脑里的首先是viewpager,自己也尝试着去实现,发现自定义viewpager垂直滑动并不友好,最后放弃了。于是开始了第二套方案,尝试一下google刚刚推出不久的viewpager2,viewpa... 阅读详情

一.RecycleView是什么

RecycleView是2014年谷歌大会推出的Android5.0Lollipop的一个架构,提供一个高度解耦,灵活性和高效率的体验,通过设置它提供不同的LayoutManager、ItemDecoration、ItemAnimator 可实现更加丰富多样的效果。但是RecyclerView也有缺点和 让人头疼的地方:设置列表的分割线时需要自定义,另外列表的点击事件需要自己去实现。

二.玩玩RecycleView

在build.gradle中配置

implementation ‘com.android.support:recyclerview-v7:28.0.0’

在布局中添加

<?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"
    tools:context=".MainActivity">

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

添加一个实体类,模拟后台数据

public class Movie {

    public Movie(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private String name;
}

自定义Adapter,并设置条目点击监听

package com.seven.material.recycleview;

import android.content.Context;
import android.graphics.Color;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

/**
 * Time:2019/12/13
 * <p>
 * Author:wangzhou
 * <p>
 * Description:
 */
public class MovieAdapter extends RecyclerView.Adapter<MovieAdapter.MyHolder> {


    private Context context;
    private List<Movie> movies = new ArrayList<>();
    private LayoutInflater layoutInflater;
    private List<Integer> heights;

    public boolean isStagged() {
        return stagged;
    }

    public void setStagged(boolean stagged) {
        this.stagged = stagged;
    }

    private boolean stagged;

    public MovieAdapter(List<Movie> movies, Context context) {
        this.movies = movies;
        this.context = context;
        layoutInflater = LayoutInflater.from(context);
        heights = new ArrayList<Integer>();
        for (int i = 0; i < movies.size(); i++) {
            heights.add((int) Math.max(200,Math.random()*550));
        }
    }

    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {


        return new MyHolder(layoutInflater.inflate(R.layout.item_recy, viewGroup, false));
    }

    @Override
    public void onBindViewHolder(@NonNull MyHolder myHolder, int position) {

        myHolder.textView.setText(movies.get(position).getName());
        myHolder.itemView.setBackgroundColor(Color.rgb(100, (int) (Math.random() * 255), (int) (Math.random() * 255)));
        if(isStagged()){
            ViewGroup.LayoutParams params = myHolder.itemView.getLayoutParams();
            params.height = heights.get(position);
            myHolder.itemView.setLayoutParams(params);
        }

        myHolder.itemView.setOnClickListener(new MyClickListener(position));

    }

    @Override
    public int getItemCount() {
        return movies == null ? 0 : movies.size();
    }

    public void addItem(int i) {
        movies.add(i, new Movie("movie" + i));
        notifyItemInserted(i);
    }

    public void removeItem(int i) {
        movies.remove(i);
        notifyItemRemoved(i);
    }

    class MyHolder extends RecyclerView.ViewHolder {

        TextView textView;

        public MyHolder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.txt);
        }
    }

    private ItemClickListener onItemClickListener;

    public void setItemClickListener(ItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    public interface ItemClickListener {
        void onItemClick(View view, int position);
    }

    class MyClickListener implements View.OnClickListener {
        private int position;

        public MyClickListener(int position) {
            this.position = position;
        }

        @Override
        public void onClick(View v) {
            if (onItemClickListener != null) {
                onItemClickListener.onItemClick(v, position);
                Toast.makeText(context, "movie" + position + "被点击了!", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

通过LayoutManager设置现实效果

设置线性管理器

   RecyclerView.LayoutManager linearLayoutManager =
                        new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false);
                movieAdapter.setStagged(true);
                recyclerView.setLayoutManager(linearLayoutManager);

设置Grid管理器

    RecyclerView.LayoutManager gridLayoutManager =
                        new GridLayoutManager(MainActivity.this, 3, LinearLayoutManager.VERTICAL, false);
                movieAdapter.setStagged(true);
                recyclerView.setLayoutManager(gridLayoutManager);

设置瀑布流

     RecyclerView.LayoutManager staggedLayoutManager = new StaggeredGridLayoutManager(3, LinearLayoutManager.VERTICAL);
                movieAdapter.setStagged(true);
                recyclerView.setLayoutManager(staggedLayoutManager);

设置分割线及添加头部和底部数据

添加交互动画

分页加载

RecycleView的基本使用 前言 为了解决 ListView 存在的拓展性差、需要手动优化性能等问题,Android 提供了滚动组件 RecycleView。本篇博客用于梳理 RecycleView 的使用方法。 RecycleView 的优点 RecycleView 仅会处理当前现实在屏幕上的项。假如列表中有 1000个元素,而页面只显示其中 10 个,那么 RecycleView 仅处理这 10 个项 当某个项滚出屏幕时,RecycleView 会回收其视图。这个项被回收,用于填充新进入屏幕的内容。 当某一项发生变化时,仅重新绘 阅读详情

相关推荐

Android RecycleView出现大间隔问题分析

Android RecycleView出现大间隔问题分析文章链接知识点 RecycleView使用StaggeredGridLayoutManager出现大间隔问题; RecycleView中一些“有兴趣的方法”记录; 新名词记录{} 概述在开发中,遇到一个很奇怪的问题:当我使用瀑布流布局的时候,重新new一个adapter进去,然后就会出现第一个item和后面的item之间出现一个很大的空白区域。

姚镜堂 7520

RecycleView简单介绍

通过此文可以简单了解以下: 1、RecycleView是什么 2、RecycleView的简单使用 3、RecycleView Item分割线的自定义 4、RecycleView的默认动画

wuyinlei的博客 7621

RecycleView 删除指定item

以前在使用ListView的时候,ListView删除item比较简单,现在基本都不再使用ListView,都换成了RecycleView了,这里的删除稍微麻烦一点,要执行多个方法,才能把item删除掉,根据代码讲解一下 adapter.notifyItemRemoved(position); adapter.notifyItemRangeChanged(0, adapter.getItem

Hedong的博客 5741

RecycleView的基本配置和使用方法(五)--总结

定义:从字面意思可以看出recycleview是重视回收和复用view的一个控件。 基本方法介绍(1)getItemViewType(int position)--根据位置来判定使用哪种类型的View(打造出各种样式的recyclerView的基础); (2)recyclerView.Holder--主要是对findviewbyid的减少使用的优化,这个和listview没什么区别,只是说recyc

开发技术总结专栏 1257

RecycleView的基本使用方法

为什么要使用RecycleView,而不再使用ListView记得每一次在用ListView的时候,在Adapter中,总是需要我们自己去创建一个ViewHolder,去存储ListItem的布局,这么做的原因在于findViewById()是一个很耗时间的操作,所以我们需要一个静态的对象将layout过的控件给保存起来,下一次刷新这个item的时候,就不再需要调用findViewById去View

持剑 5804

ScrollView嵌套RecycleView之后 recycleView惯性消失

在项目中遇到recycleView滑动非常卡顿,惯性消失,查看XML发现和scrollView嵌套了, scrollView 套了LinearLayout 然后套了N个元素,其中就有recycleView. 初步怀疑,两者冲突了,应该是move事件,经调查前辈们已经解决。 现贴出带码:自定义scrollView,然后在套用recycleView。/** * 屏蔽 滑动事件 * */cl

HKlsijun的博客 767

Android TV开发总结【RecycleView】

在TV开发中RecycleView的使用是最让人头疼的经常会出现焦点丢失。因为当item未显示时不能获取焦点。所以当我们按上下键时经常丢失焦点或者焦点乱跳。要解决这个问题我们必须要手动控制RecyclerView 的按键和焦点移动。 所以我们这里需要需要自定义RecycleView。 代码如下,各个方法作用在注视中已添加: public class TvRecyclerView extend...

李彬博客专栏 2703

STM32串口通信实战:从CubeMX配置到printf重定向全解析

串口通信是嵌入式系统中最基础且广泛使用的数据交换方式,它基于异步串行通信原理,通过TX(发送)和RX(接收)两根信号线实现设备间的全双工通信。其技术价值在于协议简单、硬件成本低、可靠性高,是单片机与上位机调试、传感器数据采集、设备控制等场景的首选方案。在STM32等ARM Cortex-M系列MCU中,USART外设通过硬件自动处理时序,大大减轻了CPU负担。本文聚焦于嵌入式竞赛与开发中的高频需求,以STM32G431RBT6为例,详解通过CubeMX配置USART1、实现按键触发数据发送、并完成print

weixin_30603633的博客 546

Android RecycleView嵌套RecycleView 高度不对问题

在使用RecycleView嵌套RecycleView时,可能会发生子RecycleView高度显示不对问题。 注意修改下面几处,在父Adapter的父布局 @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { LayoutInflater.from(context).inflate(R.layout.

傲慢的上校的专栏 7787

Python_构建同花顺问财智能选股API服务

本文详细介绍了如何使用Python构建同花顺问财智能选股API服务,涵盖从环境准备、核心API开发到高级功能扩展的全过程。通过Flask框架和pywencai库,开发者可以快速搭建稳定可靠的选股接口,实现自动化股票筛选与交易系统集成,提升量化投资效率。

weixin_30596343的博客 333

不用公网IP!用Ollama+Chatbox搭建家庭AI助手(内网穿透方案对比)

本文详细介绍了如何利用Ollama和Chatbox在家庭局域网中搭建本地AI助手,无需公网IP即可实现内网穿透。通过对比不同穿透方案(如Tailscale、FRP等),提供最优配置建议,帮助用户低成本部署隐私安全的家庭AI系统,适用于智能家居、儿童教育等多种场景。

weixin_26765287的博客 460

Android Studio在Fragment中添加Recycleview

Android Studio在Fragment中添加Recycleview 当我们在Android Studio中搭建好一个类似于微信界面的四个Fragment后,我们开始尝试先在其中的一个Fragment下新建一个Recycleview。下图是新建RecycleView之前已经搭建好的界面: 我们现在选择最左边的“新闻”Fragment,在这个片段下新建一个RecycleView: 1.我们先在这个Fragment的tab_01中新建一个RecycleView,并且更改一些参数: 2.在layout底

someone66_的博客 3605

auboi5 + d435i 使用easy handeye进行标定时,遇到相关问题记录。

解决办法:在easy_handeye默认的 calibrate.launch 文件中move group 的默认值为 "manipulator",但针对每个人的机械臂,这个值需要更改。以aubo_i5为例,需要将其改为"manipulator_i5",或者自己编写launch文件时,传入参数move group的值,便能顺利解决问题!easy_handeye_calibration_server 进程出现崩溃。

weixin_61025092的博客 958

RecycleView嵌套RecycleView

思路:RecycleView嵌套一个RecycleView首先要确定一个rootRecycleView这个rootRecycleView是要包含多个子RecycleView,在写rootRecycleView的适配器的时候其子项就是一个recycleView,然后再onBindViewHolder方法中为子recycleView设置自己的适配器。子recycleView的适配器就跟普通的适配器一样

lzjqcc的博客 8214

保姆级教程:用STM8S207R6和FD6288T自制BLDC驱动板,从原理图到代码框架搭建

本文提供了一份详细的STM8S207R6和FD6288T自制BLDC驱动板教程,涵盖从原理图设计到代码框架搭建的全过程。通过硬件选型、电源电路设计、PWM定时器配置等关键步骤解析,帮助开发者快速掌握无刷直流电机驱动技术,实现高效稳定的电机控制方案。

weixin_28729205的博客 488

Python 对接钉钉获取员工上一篇日报或周报内容

摘要:本文介绍使用Python对接钉钉API获取员工日报/周报的方法。首先需创建钉钉应用并开通日志权限,获取员工UserID。通过获取AccessToken进行鉴权,调用topapi/report/list查询日志记录,筛选最新日报/周报后,使用topapi/report/details获取详细内容。需注意权限控制、时间范围筛选和模板匹配等问题。文末提供完整代码示例,并建议扩展自动化触发、数据存储等功能。该方法适用于企业自动化获取员工工作日志的场景。

从技术实践立足,从项目管理方法论延伸思考 808

RecycleView使用总结二

一. 摘要    RecycleView没有像ListView那样直接提供添加headerView和footerView的方法,所以要实现这样的效果需要自己去实现。本文记录了通过item类型作为区分,来为列表添加headerView的整个流程。同时,记录了针对线性布局,网格布局,瀑布流布局的适配方法。   左右滑删除,拖动Item是很常见的功能。针对这些功能,安卓API中提供了相关的辅助类Item...

潇潇暮雨的专栏 1391

手把手教你用ESP32-C3打造智能聊天机器人-立创实战派

本文将详细介绍如何利用立创ESP32-C3开发板,烧录小智AI程序,快速实现一个功能强大的聊天机器人。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 5534

两个recycleview列表左右联动实现

概述: 在之前的项目中曾经做过电商分类页面左右两个列表联动的实现,当时的做法是左侧列表使用RecycleView,右侧列表使用的是ScrollView,通过onOverScrolled方法来检测右侧列表是否已经到达了顶部继续下拉还是已经到达了底部继续上滑。这种方式肃然也实现了左右两个列表联动的需求,但是体验上还是有继续优化的空间,之后做了一版优化,左右两个列表都是用recycleview来实现。 ...

搬砖的老牛 3068

10.28华为OD机试真题 新系统 - 社交网络消息转发 (Java/Py/C/C++/Js/Go)

10.28华为OD机试真题 新系统 - 社交网络消息转发 (Java/Py/C/C++/Js/Go)

算法大师! 426

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

使用BRVAH RecycleView 嵌套RecycleView点击Item里面内容无法响应

使用BRVAH RecycleView 嵌套RecycleView 点击Item 子类RecycleView内容的部分无法被点击。

Xia_燚的博客 1065

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

RecycleView使用详解

一个非常重要和常用的UI组件,在应用中以列表形式或网格形式展示大量数据,是一个可滑动的组件。

weixin_62416090的博客 917

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

RecycleView的实现

RecycleView的实现步骤

天高任鹏飞 1125

Kotlin实现recycleview

导入依赖: implementation "androidx.recyclerview:recyclerview:1.1.0" implementation "androidx.cardview:cardview:1.0.0" activity: package com.example.zkotlin import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.rec

cf8833的博客 2873

RecycleView用法总结

先上效果图: 简介: 如动画所示,这个项目下来用上了ListView,GridView,还有一个横向的GridView。不过,却没有单独用我们所熟知的ListView等多个控件,而仅仅只用了一个RecycleView。顾名思义,RecycleView——可以循环♻️回收,反复使用的View,一个顶三。从此listView可以有替代者了。 怎么用: (1)准备 在XML文件

君子务本 2086

RecycleView 简单用法

RecycleView 的出现逐渐取代了 ListView GridView  功能更加强大 省去了ListView的优化问题 更方便使用:首先导入依赖:(依赖的版本号 根据个人需要进行修改)compile 'com.android.support:recyclerview-v7:27.+'xml文件:(一个简单的控件 v7包)&lt;android.support.v7.widget.Recyc...

做事不嫌早晚,重要的是在路上. 3635
上一篇: 从Android Apt(Annotation-Processing-Tool)到手写一个Android6.0以上的运行时权限申请框架
下一篇: AS 解决support-annotations版本冲突
android_seven
博客等级 码龄11年 8粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值