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

基类,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());

 

转载于:https://my.oschina.net/u/3015461/blog/919956

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值