学习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); } } });回调绘制方法,给线条设置间距和线条。
待续。。
阅读全文
0 0
- RecyclerView学习
- RecyclerView学习
- 【学习】RecyclerView
- RecyclerView学习
- RecyclerView学习
- RecyclerView学习
- 学习RecyclerView
- RecyclerView学习
- Android学习之RecyclerView
- Android学习之RecyclerView
- Android学习之RecyclerView
- 学习RecyclerView和CardView
- 学习RecyclerView(一)
- RecyclerView学习资料
- RecyclerView学习笔记
- RecyclerView+Cardview学习探索
- #Android学习#RecyclerView基础
- Android学习之RecyclerView
- C++引用的总结
- 《机器学习》- 支持向量机SVM
- 二维数组的初始化
- 分块算法
- 提问与回答 VS2017中C#控制台编程的调试基础示例
- 学习RecyclerView
- 简单粗暴地理解js原型链–js面向对象编程
- linux
- js url传参中文乱码
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
- Python:多线程、消息队列编程
- SpringBoot配置属性之DataSource
- Android测试-unitTest
- oracle-日常小计——oracle cmd 命令行形式导入 sql文件