博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓开发学习笔记—————《第一行代码》第四章 探究碎片 (Fragment和RecyclerView实践)...
阅读量:6155 次
发布时间:2019-06-21

本文共 2330 字,大约阅读时间需要 7 分钟。

项目名称:FragmentBestPratice

项目说明:一个简易版的新闻应用

 

RecyclerView的任务仅限于回收和定位屏幕上的View。

ViewHolder:容纳View视图。

 

RecyclerView需要显示视图对象时,会找它的Adapter。

1.首先会调用Adapter的getItemCount()方法,RecyclerVIew询问数组列表中包含多少个对象。

2.调用Adapter的onCreateViewHolder方法创建ViewHolder及其要显示的视图。

3.调用onBindViewHolder,Adapter会找到目标位置的数据并将其绑定到ViewHolder的视图上。

一旦有了够用的ViewHolder,RecyclerView会停止调用onCreateViewHolder,它会回收旧的ViewHolder以节约时间和内存。

RecyclerView类来自于谷歌支持库,要使用它,首先要添加RecyclerView依赖库。

 

碎片的生命周期

onAttach():当碎片和活动建立关联的时候调用

onCreateView():为碎片创建视图时调用。

onActivityCreate:确保与碎片相关联的活动一定已经创建完毕的时候调用。

onDestroyView:当与碎片关联的视图被移除的时候调用。

onDetach:当碎片和活动解除关联的时候调用。

 

使用RecyclerView关键步骤:写一个适配器,新建一个内部类NewsAdapter来作为RecyclerView的适配器。

class NewsAdapter extends RecyclerView.Adapter
{ private List
mNewsList; class ViewHolder extends RecyclerView.ViewHolder { TextView newsTitleText; public ViewHolder(View view) { super(view); newsTitleText=(TextView)view.findViewById(R.id.news_title); } } public NewsAdapter
newsList) { mNewsList = newsList; }}

 

覆写 onCreateViewHolder,onBindViewHolder,getItemCount方法,

@Overridepublic int getItemCount() {  return mNewsList.size();  }
@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {  View view =   LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item,parent,false);  final ViewHodler holder = new ViewHolder(view);  view.setOnClickListener(...);  return holder;}
@Overridepublic void onBindViewHolder(ViewHolder holder, int position) { News new = mNewsList.get(position);  holder.newsTitleText.setText(news.getTitle());}

向RecyclerView中填充数据

public class NewsTitleFragment extends Fragment { ...  @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {  View view = inflate.inflate(R.layout.news_title_frag,container,false);  RecyclerView newsTitleRecyclerView=(RecyclerView)view.findViewById(R.id.news_title_recycler_view);  LinearLayoutManager layoutManager= new LinearLayoutManager(getActivity());  newsTitleRecyclerView.setLayoutManager(layoutManager);  NewsAdapter adapter = new NewsAdapter(getNews());  newsTitleRecyclerView.setAdapter(adapter);  return view;  }  private List
getNews() { ... }}

 

转载于:https://www.cnblogs.com/kyun/p/9840304.html

你可能感兴趣的文章
C++ 11 lambda
查看>>
Android JSON数据解析
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>
centos 下安装g++
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
Wait Functions
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>