recycle添加头布局

1.概述
recycler逐步取代了listview和GridView
优点:可以自定义宽高,方便开发
缺点:没有添加头布局的方法
2.思路
引入一个依赖com.android.support:recyclerview-v7:26.0.0-alpha1并把版本改成与自己版本适用的
自定义一个布局,根据判断添加到头布局里去
3.代码实现
//mainactivity里的代码如下
package com.example.recyclerview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
RecyclerView rc;
List data;
List data2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    initData();

}

private void initView() {
    rc = (RecyclerView) findViewById(R.id.rc);
}

private void initData() {
    data = new ArrayList<String>();
    data2 = new ArrayList<String>();

    for (int i = 1; i <= 25; i++) {
        data.add("项目" + i);
    }
    for (int i = 'A'; i < 'Z'; i++) {
        data2.add("" + (char) i);
    }
   myAdapter adapter= new myAdapter();
    TextView te = new TextView(this);
    te.setText("标题厉害不?");
    TextView te1 = new TextView(this);
    te1.setText("一般般");
    adapter.getHeadView(te);
    adapter.getHeadView(te1);
    LinearLayoutManager mgr = new LinearLayoutManager(this);
    mgr.setOrientation(LinearLayoutManager.VERTICAL);

// GridLayoutManager mgr=new GridLayoutManager(this,3);
//StaggeredGridLayoutManager mgr = new StaggeredGridLayoutManager(5, StaggeredGridLayoutManager.HORIZONTAL);
rc.setLayoutManager(mgr);
rc.setAdapter(adapter);
}

class myAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    public static final int TYPEONE = 0;
    public static final int TYPETWO = 1;
    public static final int TYPETHREE = 2;
    List<View> dataview = new ArrayList<View>();
    public void getHeadView(View view) {
        dataview.add(view);
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = null;
        switch (viewType) {
            case TYPETHREE:
                View vv = View.inflate(MainActivity.this,R.layout.head, null);

// v = getLayoutInflater().inflate(R.layout.head, null);
return new ViewHolderHead(vv);
case TYPEONE:
v = getLayoutInflater().inflate(R.layout.recycler, null);
return new ViewHolderOne(v);
case TYPETWO:
v = getLayoutInflater().inflate(R.layout.recycler2, null);
return new ViewHolderTwo(v);
}
return null;
}

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        int type = getItemViewType(position);
        if (type == TYPETHREE) {

// ViewHolderHead head = (ViewHolderHead) holder;
// head.ll.addView(dataview.get(position));
((ViewHolderHead) holder).ll.removeView(dataview.get(position));
((ViewHolderHead) holder).ll.addView(dataview.get(position));

        } else if (type == TYPEONE) {
            ViewHolderOne one = (ViewHolderOne) holder;
            one.tv1.setText(data.get(position));
        } else {
            ViewHolderTwo two = (ViewHolderTwo) holder;
            two.tv2.setText(data2.get(position));
        }
    }

    @Override
    public int getItemCount() {
        return data == null ? 0 : data.size();
    }

    @Override
    public int getItemViewType(int position) {
        if (position < dataview.size()) {
            return TYPETHREE;
        } else if (position % 2 == 0) {
            return TYPEONE;
        } else {
            return TYPETWO;
        }

    }

    public class ViewHolderOne extends RecyclerView.ViewHolder {
        TextView tv1;
        ImageView iv1;

        public ViewHolderOne(View itemView) {
            super(itemView);
            tv1 = itemView.findViewById(R.id.tv);
            iv1 = itemView.findViewById(R.id.iv);
        }
    }

    public class ViewHolderTwo extends RecyclerView.ViewHolder {
        TextView tv2;
        ImageView iv2;

        public ViewHolderTwo(View itemView) {
            super(itemView);
            tv2 = itemView.findViewById(R.id.tv2);
            iv2 = itemView.findViewById(R.id.iv2);
        }
    }

    public class ViewHolderHead extends RecyclerView.ViewHolder {
        LinearLayout ll;

        public ViewHolderHead(View itemView) {
            super(itemView);
            ll = itemView.findViewById(R.id.ll);

        }
    }


}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值