android gridview添加标题,android gridview布局添加多個title
在項目中要求實現在gridview的布局效果上添加title,並且是多個在不同地方的title,每個title占據一整行,下面分享一下如何實現
先上效果圖:
1.首先添加title到list集合中:List ls;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView rl = (RecyclerView) findViewById(R.id.myrv);
final GridLayoutManager manager = new GridLayoutManager(this,2);
rl.setLayoutManager(manager);
ls = new ArrayList<>();
for(int i = 0 ; i< 100 ; i ++){
ls.add(i + "");
}
MyAdapter myAdapter = new MyAdapter();
myAdapter.addTitle(7,"呵呵噠");
myAdapter.addTitle(11,"萌萌噠");
myAdapter.addTitle(20,"餓餓噠");
rl.setAdapter(myAdapter);
}
2.在recyclerview復寫的oncreateviewholder判斷類型,是否是title,是的話就創建title的自定義viewpublic SparseArray titles = new SparseArray<>();
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if(isTitle(viewType)){
View v = LayoutInflater.from(MainActivity.this).inflate(R.layout.item_title,parent,false);
TitleViewHolder titleViewHolder = new TitleViewHolder(v);
return titleViewHolder;
}else{
View v = LayoutInflater.from(MainActivity.this).inflate(R.layout.item_test,parent,false);
MyViewHolder myViewHolder = new MyViewHolder(v);
return myViewHolder;
}
}
3.復寫adapter中的getviewtype方法@Override
public int getItemViewType(int position) {
if(isTitle(position)){
return position;
}
return super.getItemViewType(position);
}
4.復寫onbindviewholder,對不同類型的view進行綁定數據操作@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder,int position) {
if(isTitle(position)){
TitleViewHolder titleViewHolder = (TitleViewHolder) holder;
titleViewHolder.tv.setText(titles.get(position));
return;
}
//獲取空過去的item(關鍵)
for(int i = 0; i < titles.size(); i++){
int key = titles.keyAt(i);
if(position > titles.keyAt(titles.size() - 1)){
position -= titles.size();
break;
}else if(position > key && position < titles.keyAt(i + 1)){
position -= (i+1);
break;
}
}
final int s = position;
MyViewHolder myViewHolder = (MyViewHolder) holder;
myViewHolder.tv.setText(ls.get(s));
myViewHolder.tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,"您點擊了" + s,Toast.LENGTH_SHORT).show();
}
});
}
5.復寫getitemcount方法重新負值item數量public int getItemCount() {
return (ls.size() + titles.size());
}
6.添加兩個方法用於判斷是否是title,和添加title方法public boolean isTitle(int position){
return titles.get(position) == null ? false:true;
}
public void addTitle(int position,String title){
titles.put(position,title);
}
7.重點,對title類型進行分配兩個單元格處理@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
//如果是title就占據2個單元格(重點)
GridLayoutManager manager = (GridLayoutManager) recyclerView.getLayoutManager();
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if(isTitle(position)){
return 2;
}
return 1;
}
});
}
到此為止就完成了一個可以任意添加title的recyclerview
android gridview添加标题,android gridview布局添加多個title相关推荐
- android 高德地图显示标题,android学习之高德地图添加标记
Marker用于标注地图上的一个特定位置 aMap的.addMarker(markerOptions) 方法即可 markerOptions有如下的属性 position(Required) 在地图上 ...
- 天地图给一个区域添加标题_天地图之添加覆盖物
原文首发于微信公众号:jzman-blog,欢迎关注交流! 接着上一篇继续来学习天地图 Android SDK ,地图开发中除了常见的定位需求,还有就是覆盖物的添加,比如最近的项目是有关风险管控的,在 ...
- android读取网页标题,如何获取WebView中页面的Title信息
应用开发中需要获取WebView当前页面的标题,可能通过对WebChromeClient.onReceivedTitle()方法的重写来实现 代码如下:public class MainActivit ...
- android获取网页标题,android获取系统自带浏览器书签
刚刚接手一个备份系统浏览器书签的模块,现在把代码贴出来,另外有几点疑问请路过的大神指教 1.根据官方api应该是有以下几个字段是可以获取的 但是除了TITLE和URL能获取其他的都会报java.lan ...
- android 4个button 田字布局,ActionBar简介
ActionBar是Android 3.0以后Anrdoid系统增加的导航栏功能控件.它标识了用户当前操作界面的位置,并提供了额外的用户动作.界面导航等功能.使用ActionBar的好处是,它可以给提 ...
- matplotlib-10 title添加标题
matplotlib-10 title添加标题 标题 代码展示 重要代码解释 标题 在科技论文中,图片的标题是不需要的.标题一般另起一行,标上标号,写在图片的下面.但是,有些时候我们需要给图片添加标题 ...
- 前端给网页添加标题和前面的小图标原生html和vue项目
目录 效果图如下 一.添加标题 1.原生html添加方法 2.vue添加方法 二.网页前面的小图标 1.原生html添加方法pc端和移动端同时添加html里面 (1).pc端如下 (2).移动端如下 ...
- android 新闻功能列表,android listview实现新闻列表展示效果
本文实例为大家分享了android listview列表展示效果的具体代码,供大家参考,具体内容如下 1.封装一些新闻数据 2.使用listview展示出来 3.设置条目点击事件,点击后跳转浏览器查看 ...
- android gridview item 边框,Android实现为GridView添加边框效果
为GridView添加边框效果,供大家参考,具体内容如下 1.自定义GridView的item样式: grid_item.xml文件 android:layout_width="wrap_c ...
最新文章
- java im 框架_Netty实战:设计一个IM框架
- javascript之parseInt的用法分析
- SQL Server 2008获取一个表的字段,类型,长度,是否主键,是否为空,注释等信息...
- 用Apache Ivy实现项目里的依赖管理
- python爬虫与django_请问django和爬虫程序如何整合?
- 自动轮播与按钮的联动
- 一个不会画流程图的程序员不是一个好码农
- git为私有仓库设置密码_Jenkins与Git最佳实践-1
- jquery radio,select相关操作
- 吉米多维奇数学分析_《吉米多维奇数学分析习题集》到底是一本怎样的书?
- teechart for java_TeeChart java控件
- 在表格中显示形位公差符号
- 银联支付退款 php,PHP 银联支付
- Tomcat调优技巧
- Android APP漏洞自动化静态扫描检测工具-Qark
- 股票交易费的计算---沪A版
- 用photoshop做电影胶片效果
- Electron播放 RTMP流 实现
- C/C++大学生考勤系统
- Ramdisk -内存盘的使用
热门文章
- 新建网站了!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现,可以在线阅读了!...
- js 多个input值拼接json字符串
- 图片放大不失真软件 S-Spline V2
- Google十大真理带给中国网络公司的启示
- 苹果下半年推出M2芯片MacBook Air 配色更多更轻薄
- 千万别让海底捞知道你的生日
- 苹果隐私部门负责人:在iPhone上侧载应用会减少用户选择
- 超70家影视传媒单位联合500余位艺人倡议:立即清理未经授权短视频
- 昆仑万维14亿收购音频社交平台Star Group 60%股权 周亚辉获益超10亿元
- 苹果重奖库克,挽留其留任到2025年,网友:雷军又没机会了