您的位置:首页 > 编程语言

面向Holder编程,分担Activity、Fragment部分。

2017-06-13 00:00 211 查看
基类,contentView为加载页面部分,Data设置数据类型,Context上下文,可以获取自定义应用application时的创建的,省去传入的麻烦。

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());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: