在項目中要求實現在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相关推荐

  1. android 高德地图显示标题,android学习之高德地图添加标记

    Marker用于标注地图上的一个特定位置 aMap的.addMarker(markerOptions) 方法即可 markerOptions有如下的属性 position(Required) 在地图上 ...

  2. 天地图给一个区域添加标题_天地图之添加覆盖物

    原文首发于微信公众号:jzman-blog,欢迎关注交流! 接着上一篇继续来学习天地图 Android SDK ,地图开发中除了常见的定位需求,还有就是覆盖物的添加,比如最近的项目是有关风险管控的,在 ...

  3. android读取网页标题,如何获取WebView中页面的Title信息

    应用开发中需要获取WebView当前页面的标题,可能通过对WebChromeClient.onReceivedTitle()方法的重写来实现 代码如下:public class MainActivit ...

  4. android获取网页标题,android获取系统自带浏览器书签

    刚刚接手一个备份系统浏览器书签的模块,现在把代码贴出来,另外有几点疑问请路过的大神指教 1.根据官方api应该是有以下几个字段是可以获取的 但是除了TITLE和URL能获取其他的都会报java.lan ...

  5. android 4个button 田字布局,ActionBar简介

    ActionBar是Android 3.0以后Anrdoid系统增加的导航栏功能控件.它标识了用户当前操作界面的位置,并提供了额外的用户动作.界面导航等功能.使用ActionBar的好处是,它可以给提 ...

  6. matplotlib-10 title添加标题

    matplotlib-10 title添加标题 标题 代码展示 重要代码解释 标题 在科技论文中,图片的标题是不需要的.标题一般另起一行,标上标号,写在图片的下面.但是,有些时候我们需要给图片添加标题 ...

  7. 前端给网页添加标题和前面的小图标原生html和vue项目

    目录 效果图如下 一.添加标题 1.原生html添加方法 2.vue添加方法 二.网页前面的小图标 1.原生html添加方法pc端和移动端同时添加html里面 (1).pc端如下 (2).移动端如下 ...

  8. android 新闻功能列表,android listview实现新闻列表展示效果

    本文实例为大家分享了android listview列表展示效果的具体代码,供大家参考,具体内容如下 1.封装一些新闻数据 2.使用listview展示出来 3.设置条目点击事件,点击后跳转浏览器查看 ...

  9. android gridview item 边框,Android实现为GridView添加边框效果

    为GridView添加边框效果,供大家参考,具体内容如下 1.自定义GridView的item样式: grid_item.xml文件 android:layout_width="wrap_c ...

最新文章

  1. java im 框架_Netty实战:设计一个IM框架
  2. javascript之parseInt的用法分析
  3. SQL Server 2008获取一个表的字段,类型,长度,是否主键,是否为空,注释等信息...
  4. 用Apache Ivy实现项目里的依赖管理
  5. python爬虫与django_请问django和爬虫程序如何整合?
  6. 自动轮播与按钮的联动
  7. 一个不会画流程图的程序员不是一个好码农
  8. git为私有仓库设置密码_Jenkins与Git最佳实践-1
  9. jquery radio,select相关操作
  10. 吉米多维奇数学分析_《吉米多维奇数学分析习题集》到底是一本怎样的书?
  11. teechart for java_TeeChart java控件
  12. 在表格中显示形位公差符号
  13. 银联支付退款 php,PHP 银联支付
  14. Tomcat调优技巧
  15. Android APP漏洞自动化静态扫描检测工具-Qark
  16. 股票交易费的计算---沪A版
  17. 用photoshop做电影胶片效果
  18. Electron播放 RTMP流 实现
  19. C/C++大学生考勤系统
  20. Ramdisk -内存盘的使用

热门文章

  1. 新建网站了!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现,可以在线阅读了!...
  2. js 多个input值拼接json字符串
  3. 图片放大不失真软件 S-Spline V2
  4. Google十大真理带给中国网络公司的启示
  5. 苹果下半年推出M2芯片MacBook Air 配色更多更轻薄
  6. 千万别让海底捞知道你的生日
  7. 苹果隐私部门负责人:在iPhone上侧载应用会减少用户选择
  8. 超70家影视传媒单位联合500余位艺人倡议:立即清理未经授权短视频
  9. 昆仑万维14亿收购音频社交平台Star Group 60%股权 周亚辉获益超10亿元
  10. 苹果重奖库克,挽留其留任到2025年,网友:雷军又没机会了