android项目从零开始 RecycleView 设置滚动到某item时间

android item弹出popupwindow recycleview_Android实现RecycleView嵌套RecycleView中的item自动循环滚动功能... 利用RecyclerView实现无限循环滚动一、先上效果图二、GitHub地址GitHub地址 https://github.com/MNXP/AutomaticRolling‍三、思路RecycleView实现,内部实现Runnable滚动四、实现1)内部实现Runnable static class AutoPollTask implements Runnable { ... 阅读详情

今天在实现快速选择号码需求中使用到了RecycleView, 设计要求每次选完号码后快速移动到最后面那个Item,横向的RecycleView,开始直接使用 LinearLayoutManager的 smoothScrollToPosition()定位滑动到最后,因为没有任何参数设置滚动时间,在快速选号动画时间太过短暂,无法看到滚动效果。

1.滚动定位参考(http://blog.youkuaiyun.com/tyzlmjj/article/details/49227601)

设置滚动监听,根据自己需要最后纠正停留位置


因为我是横向的,所以是x轴的变化,相应修改为

mRecyclerView.scrollBy(mRecyclerView.getChildAt(n).getLeft(),0)


2.修改滚动时间

 参考(http://angeldevil.me/2015/09/08/The-smoothScrollToPosition-duration-of-RecyclerView/)



修改动画时间。


【Android】RecycleView 将指定item滚动置顶(kotlin) 实现RecyclerView的指定项平滑滚动置顶,实现点击上一项置顶或下一项置顶 阅读详情

相关推荐

Android RecycleView出现大间隔问题分析

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

姚镜堂 7520

Android NestScrollView 设置滑动时长

ObjectAnimator yTranslate = ObjectAnimator.ofInt(mViewBinding.scrollviewFragFind, "scrollY", 0); yTranslate.setDuration(1000); yTranslate.start();

FlyPig_Vip的博客 495

Android开发知识之RecycleView使用篇

使用RecycleView的好处 从Android5.0开始,google给我们带来了一个全新的列表组件,叫做RecycleView。使得apk几乎已经抛弃了ListView,之所以RecycleView那么强大,总结的主要原因有如下几点: 1、提供ViewHolder模式,使得开发者真正操作的是ViewHolder,而不是像ListView中的getView,需要开发者自己setTag和vie...

粉丝交流群:957013433 487

给RecycleView item 加动画时注意的问题

在给item加上动画之后,慢速滑动的时候是没有问题的,但要快速滑动就会出现卡屏现象。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <code class=" hljs java

u013260551的专栏 1378

告别手动输入!用Burp插件+ddddocr,5分钟搞定图片验证码自动识别

本文详细介绍了如何利用Burp插件和ddddocr开源库快速构建图片验证码自动识别系统,实现高效、零成本的验证码自动化解决方案。通过环境搭建、性能调优和Burp Suite深度集成,显著提升安全测试效率,特别适用于金融和电商系统的批量测试场景。

weixin_29099217的博客 200

AI全景之第八章第三节:时间序列分析与预测技术

摘要 时间序列分析与预测技术从传统统计模型发展到深度学习方法。传统方法包括ARIMA模型(处理趋势和季节性)、指数平滑(加权平均预测)和状态空间模型(概率框架分解)。机器学习方法通过特征工程和树模型提升非线性建模能力。深度学习方法中,RNN/LSTM处理序列依赖,TCN利用因果卷积,Transformer通过注意力机制捕获长程依赖。当前研究趋势结合神经符号方法和生成模型,以提高预测精度和可解释性。不同方法各具优势,需根据数据特性和预测需求选择。

技术引领业务创新 988

RecycleView多条目加载,设置动画

public class RecycleAdapter extends RecyclerView.Adapter&lt;RecyclerView.ViewHolder&gt; { private static final String TAG = "RecycleAdapter-----"; private final Context context; private fi...

拉莫帅的博客 417

ANSYS Workbench实战:用网格自适应搞定超弹性橡胶大变形仿真(附避坑命令流)

本文深入探讨了ANSYS Workbench中超弹性橡胶大变形仿真的网格自适应技术,重点解析了混合U-P单元的应用、非线性自适应网格的实战技巧及材料模型选择的注意事项。通过具体案例和命令流示例,帮助工程师有效解决橡胶仿真中的收敛问题和网格畸变挑战,提升仿真精度和效率。

weixin_42666036的博客 303

如何精确设置 RecyclerView 自动滑动时间(速度)

有时我们会碰到一个让RecyclerView在固定时间滑动到指定位置的需求,网上的方法都是重写LinearSmoothScroller类的calculateTimeForScrolling()方法,虽然可以修改时长,但还是不能精确到具体的时间。本文将会教大家如何去精确设置RecyclerView自动滑动的时间。 之前看到这篇文章:android之ViewPager修改滑动速度,发现是可以通过...

孙强 Jimmy 的博客 7363

【接地系统篇】电力系统接地技术详解:从基本原理到实际应用

接地是为电流返回电源提供的一条低阻抗通道。简单来说,就是为故障电流修建一条"安全回家"的路,防止电流通过人体或其他不应带电的部件。接地系统选择原则安全性优先:TN-S系统安全性最高,适合重要场所经济性考虑:TN-C系统成本最低,适合一般工业连续性要求:IT系统供电连续性最好,适合特殊场所灵活性选择:TN-C-S系统兼顾经济与安全,应用最广。

2301_81299416的博客 2223

从零到一:RJ71EN71 ModbusTCP配置的避坑指南与实战技巧

本文详细解析三菱RJ71EN71模块的ModbusTCP配置全流程,涵盖GX Works3参数设置、地址映射、通信调试等核心环节。针对工业环境中常见的IP冲突、软元件分配错误、通信超时等高频问题提供实战解决方案,帮助工程师快速构建高可靠性通信网络,避免项目延期风险。

zzz56的博客 331

关于RecyclerView滑动速度和抛掷速度的控制和改变

这是我发布的第一篇技术博客,本应该在上个月做项目的时候实时发布的,那时候的理解也最深刻。由于个人执行力不够,拖延到现在,万事开头难,开始了就要坚持下去。 这篇文章主要讲在Android的RecyclerView组件中,如何设置RecyclerView滑动的速度,以及快速滑动(抛掷)后RecyclerView滑行的速度(或者称为距离)。 RecyclerView滑动速度的设置(此处以横向的滑动为例

qq_28051795的博客 4175

FPGA新手必看:Quartus生成jic文件全流程详解(附AS/JTAG模式选择指南)

本文详细解析了在Quartus中生成JIC文件以固化FPGA程序到Flash的全流程。核心在于理解JIC文件作为连接JTAG调试与AS固化的桥梁作用,并重点阐述了Convert Programming Files工具的关键配置步骤、AS与JTAG模式的选择逻辑,以及烧录过程中的常见问题排查指南,帮助开发者实现程序断电不丢失。

weixin_29271053的博客 275

RecycleView Item显示不全滚动方法

RecycleView 横向滚动实现类似Tablelayout,点击item,实现页面切换,相当于Title点击效果。 但是不同item内容长度不一,多个item一行无法显示,item有的无法显示全,想要实现点击不全item,RecycleView自动滚动显示全。 注意以下方法是横向滚动RecycleView 方案一 View为点击的Item,position是点击位置。 getLocalVisi...

neabea2016的博客 1607

信创那些事儿——Spring Boot中集成东方通中间件(TongWeb)

在Spring Boot中集成东方通中间件(如TongWeb作为Servlet容器)通常涉及几个步骤,但需要注意的是,TongWeb本身是一个独立的Java EE应用服务器,而不是像Tomcat那样可以直接嵌入到Spring Boot应用中的中间件。因此,集成通常意味着将Spring Boot应用打包为WAR文件并部署到TongWeb服务器上。

来北欧写代码 6489

9 硬件工程师笔面试高频知识考点真题解析——运算放大器

运算放大器(运放)摘要 运放是一种高增益、差分输入的模拟集成电路,具有虚短(线性区输入电压相等)和虚断(输入电流为零)特性,支持负反馈(线性放大)和开环/正反馈(饱和区比较)两种工作模式。关键特性包括高输入阻抗、低输出阻抗,理想运放参数(如无限增益)与实际参数(如有限带宽)的差异。 选型要点: 信号特性:直流/低频信号关注失调电压(Vos)、温漂;高频信号侧重带宽(GBW)和压摆率(SR)。 电源条件:单/双电源供电、电压范围及功耗需求(如电池设备需低静态电流)。 精度与噪声:微弱信号需低噪声运放,高精度场

XU157303764的博客 1673

Android实现一个选择器-recycleview滚动中第一个item位置的获取

package com.example.administrator.testanima.ActivityTwo; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotat

前人挖坑,后人种(pen) 3264

深度学习工具包 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")

AndroidStudio RecycleView实现UI界面控件滚动

AndroidStudio RecycleView实现UI界面控件滚动

dede_de_的博客 3252

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

一个Manager轻松让RecycleView指定item项置顶

RecycleView指定item项置顶效果 由于最近需求需 当滑过列表中的某一项时置顶该item项,网上也搜索了下 大多是通过ItemDecoration 来实现 原理是获指定item的view视图通过分割线去来来绘制出来.但是我的置顶item是一个横向的recycleview 能滑动能点击.而通过分割线的方式只能有点击事件.所以此种方式不适用于我的情况 所以采用滚动监听事件来失效此效果 根据...

lhj_android的博客 2559

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android DataBinding使用3-使用自动绑定的Recycleview

上面一篇描述了recycleview的使用,他的item绑定是通过在bindviewholder()里面使用itembinding来实现,但是还需要自己设置adapter并初始化adapter。 这篇将实现自动处理adapter 实现功能:recycleview存在两种不同的item,item里面又存在一个recycleview(GridView效果或者横向的recycleview) ...

前人挖坑,后人种(pen) 3105

recycleview可见位置_RecyclerView滚动定位item,并使item置顶显示

前言在android开发过程中,我们经常会遇到需要将列表展示的数据定位到某个具体的item,并将此item在列表中置顶展示的需求。那么,今天就来讲讲RecyclerView实现置顶显示某个具体的item的实现。今天涉及内容:RecyclerView依赖列表展示准备封装的 PositionScroller 类实现滚动item置顶实现滚动item置顶的另一种简单方式滚动置顶在MainActivity中...

weixin_39530288的博客 872

RecyclerView 设置固定数目 Item

一、前言 很多时候会遇到使用 RecyclerView 时,要求超过一定数目的 Item 后,固定 RecyclerView 的高度,没有超过这个数目就自适应高度。这种情况更多会出现在对话框中,数量过多时不能让对话框占据整个屏幕,同时又能控制显示的 Item 个数,下面针对不同的情况可以使用不同的方法。 二、已知 Item 高度的情况下 在已知 Item 布局的高度的情况时,可以通过设置最大高度来控制显示的 Item 数目,因为 Item 高度已知,所以计算好高度就可以达到目的,下面是具体的实现:看下效果

EleganceKing的博客 6045

Android-RecycleView嵌套多个EditText数据错乱,并获取item中EditText输入数据

在写项目的时候,我在RecycleView中的每个item嵌套了5个EditText,后来发现当输入数据,并且下滑的时候数据会显示错乱,以及没有太好的办法去获取每个Item中EditText输入的数据,后来想着只能够把输入的数据存储下来,完美解决下滑刷新数据错乱,以及保存数据,使用此方法,无论你的Recycle中有多少个EditText,都可以完美解决数据错乱的问题。 文章末尾附带代码网盘下载地址,有需要的可以下载跑一下看看。 先上效果图: 如效果图,我在第一个item中全部输入了1,下滑后再上滑数据并没

weixin_44059750的博客 1772

Android 机顶盒tv端 recycleview无法滚动到最下方的bug解决

在开发机顶盒项目中,使用recycleview的GridLayout的时候发现一个问题,因为我的item是一个图片在上,文字在下的布局,遥控器控制列表在向下滚的时候,到达最后一行,无法显示item的文字。一开始,我觉得可能是我把焦点落在item中的头像上导致的,但是后来我将焦点落在整个item上还是会这样。所以我就想从recycleview的向下滚动的距离处理,滚动距离拉大。附代码如下: private void setScrollListener() { int mScreenHeight =

BonnySoul的博客 968

Android RecycleView实现平滑滚动置顶和调整滚动速度

在实际项目里,RecycleView可以说是我们最常用到的组件,作为绑定并展示LIST数据的组件,经常需要实现平滑滚动到列表里的某个目标ITEM,并且将其置顶在屏幕最上方,而且在特殊情形下,我们需要控制滑动速度,来控制滚动的时长。

指尖流连敲击梦想,代码行行承载远方! 5453

Recycleview 中的属性简介

1.android:scrollbars (1) none :表示不显示scrollbars; vertical:表示,垂直的滚动条; horizontal:表示水平的滚动条; 2.android:scrollbarStyle 四种类型 insideOverlay: insideInset: outsideInset: outsideOverlay: 3.android:scrollbarSi...

www121104115的博客 2531
上一篇: android项目从零开始 android adb install 命令安装apk ,多台设备安装apk
下一篇: android项目从零开始 Android webview支持 文件上传、图片上传
束千凡
博客等级 码龄14年 21粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值