学习RecyclerView

来源:互联网 发布:软件如何设计接口 编辑:程序博客网 时间:2024/05/21 08:47

对RecyclerView还是很不了解,所以看鸿洋大神的视频来补充下这方面知识


RecyclerView?啥玩意?

这里写图片描述

这里写图片描述


RecyclerView实现ListView

public class MainActivity extends AppCompatActivity {    private RecyclerView mRecyclerView;    private List<String> data;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initData();        //设置RecyclerView的管理器        LinearLayoutManager manager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);        //设置RecyclerView的item分割线        mRecyclerView.setAdapter(new RecyclerViewAdapter(this,data));    }    private void initView() {        mRecyclerView  = (RecyclerView)findViewById(R.id.recyView);    }    private void initData() {        data = new ArrayList<>();        for (int i = 'A'; i < 'z'; i++) {            data.add((char)i +"");        }    }}--------------------public class RecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewHolder> {    //上下文    private Context mContext;    //数据源    private List<String> data;    //布局填充对象    private LayoutInflater layoutInflater;    public RecyclerViewAdapter(Context mContext, List<String> data) {        this.mContext = mContext;        this.data = data;        //获取到layoutInflater对象 后面好填充布局        layoutInflater = LayoutInflater.from(mContext);    }    //创建ViewHolder    @Override    public MyRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        //添加布局        View view = layoutInflater.inflate(R.layout.item_recycler, parent, false);        //把视图给ViewHolder        MyRecyclerViewHolder holder = new MyRecyclerViewHolder(view);        return holder;    }    //绑定ViewHolder 适配数据    @Override    public void onBindViewHolder(MyRecyclerViewHolder holder, int position) {        //获取该条目的字符串,并给控件设置        String str = data.get(position);        holder.mText.setText(str);    }    @Override    public int getItemCount() {        return data.size();    }}class MyRecyclerViewHolder extends RecyclerView.ViewHolder {    public TextView mText;    public MyRecyclerViewHolder(View itemView) {        super(itemView);        mText = itemView.findViewById(R.id.id_text);    }}

以上简单的实现了ListView 但是没有ListView的分割线
这里写图片描述


增加分割线

  dividerPaint = new Paint();        dividerPaint.setColor(getResources().getColor(R.color.fenge));        dividerHeight = 10;    @Override            public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {                super.getItemOffsets(outRect, view, parent, state);                    outRect.bottom= 10;            }            @Override            public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {                int childCount = parent.getChildCount();                int left = parent.getPaddingLeft();                int right = parent.getWidth() - parent.getPaddingRight();                for (int i = 0; i < childCount ; i++) {                    View view = parent.getChildAt(i);                    float top = view.getBottom();                    float bottom = view.getBottom() + dividerHeight;                    c.drawRect(left, top, right, bottom, dividerPaint);                }            }        });回调绘制方法,给线条设置间距和线条。

待续。。

原创粉丝点击