面向Holder编程,分担Activity、Fragment部分。
2017-06-13 00:00
211 查看
基类,contentView为加载页面部分,Data设置数据类型,Context上下文,可以获取自定义应用application时的创建的,省去传入的麻烦。
BannerBean.class
添加到
正是下面部分把原来要处理头布局的逻辑转到HeadHolder.class中去了
public abstract class BaseHolder<Data> { private View contentView; private Data data; protected Context context; public BaseHolder(Context context){ this.context=context; contentView=initView(); contentView.setTag(this); } /** 创建界面*/ public abstract View initView(); public View getContentView() { return contentView; } public void setData(Data data){ this.data=data; refreshView(data); } /** 根据数据刷新界面*/ public abstract void refreshView(Data data); }
BannerBean.class
public class BannerBean { private String url; private String title; public BannerBean(String url, String title) { this.url = url; this.title = title; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } }
添加到
public class SecondActivty extends AppCompatActivity { HeaderAndFooterWrapper mHeaderAndFooterWrapper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second_activity); RecyclerView rv = (RecyclerView) findViewById(R.id.second_rv); rv.setLayoutManager(new LinearLayoutManager(this)); MultAdapter mAdapter = new MultAdapter(this, new DataFactory().setMultData()); //在RecyclerView设置adpter之后 mHeaderAndFooterWrapper = new HeaderAndFooterWrapper(mAdapter); HeadHolder headHolder=new HeadHolder(this); headHolder.setData(new BannerBean(DataFactory.url2,"头布局")); mHeaderAndFooterWrapper.addHeaderView(headHolder.getContentView()); rv.setAdapter(mHeaderAndFooterWrapper); mAdapter.setOnItemClickListener(new MultiItemTypeAdapter.OnItemClickListener(){ @Override public void onItemClick(View view, RecyclerView.ViewHolder holder, int position) { Toast.makeText(SecondActivty.this, "点击位置:"+(position-mHeaderAndFooterWrapper.getHeadersCount()), Toast.LENGTH_SHORT).show(); } }); } }
正是下面部分把原来要处理头布局的逻辑转到HeadHolder.class中去了
HeadHolder headHolder=new HeadHolder(this); headHolder.setData(new BannerBean(DataFactory.url2,"头布局")); mHeaderAndFooterWrapper.addHeaderView(headHolder.getContentView());
相关文章推荐
- Spring Framework中的面向方面编程(AOP),第二部分
- 第二部分 Windows编程、面向对象程序设计
- android面向holder编程,再度封装代码
- Fragment 表示 Activity 中的行为或用户界面部分
- Spring Framework中的面向方面编程(AOP),第二部分
- 面向Holder编程
- 安卓中面向MVC的开发(面向Holder的编程)
- Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改
- 面向holder的编程,代码更清爽,管理更简单
- 在Fragment、Activity及Application生命周期中保持数据的文摘整理及部分结论
- 面向holder编程
- Android-面向Holder编程
- 在Activity之间如何面向接口编程?
- Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改--转载
- Python开发基础-Day10生成器表达式形式、面向过程编程、内置函数部分
- python基础之生成器表达式形式、面向过程编程、内置函数部分
- Android编程学习笔记 之 Fragment与Activity的数据传递
- android面向holder编程,再度封装代码
- 用Eclipse + CDT + MinGW做Windows编程第二部分:Windows编程、面向对象程序设计
- Spring Framework中的面向方面编程(AOP),第一部分