List and Grid

1.Using lists or grids in Android

App中使用 list 和 grid 是比较普遍的显示元素的的模式。

用户与条目的交互是通过触摸和工具栏。每一个条目被选择,可以显示个下拉框或进入一个详细的关于该条目的页面。

 

2. Using RecyclerView  

RecyclerView 是比 ListView、GridView更现代化的版本,解决了现有小部件存在的几个问题。它实施了一种编程风格,有良好的效果;当删除或增加元素时还带有默认的动画。

Recycler view uses a ViewHolder to store references to the views for one entry in the recycler view. A ViewHolder class is a static inner class in your adapter which holds

references to the relevant views. With these references your code can avoid the time-consuming findViewById() method to update the widgets with new data

 

3. Adapters

适配器管理数据模型,将数据适配到窗体控件中,使之成为一个个条目显示。

Adapter继承自RecyclerView.Adapter,需要重载onCreateViewHolder()、onBindViewHolder()、getItemCount()方法。

内部写一个ViewHoder类继承自ReCycleView.ViewHolder,来实现获取View的控件

public class ViewHolder extends RecyclerView.ViewHolder{
        public TextView txtHeader;
        public TextView txtFooter;
        public View layout;

        public ViewHolder(View itemView) {
            super(itemView);
            layout = itemView;
            txtHeader = (TextView)itemView.findViewById(R.id.firstLine);
            txtFooter = (TextView)itemView.findViewById(R.id.secondLine);
        }
    }

 

可以通过RecyclerView.setAdapter()来个RecyclerView指定适配器。

RecyclerView的适配器可以接受任何类型的JAVA对象。可以使用getItemCount()获取到适配器的条目数。

 

4. Gradle dependency to use recycler view

dependencies {
    ...
    compile "com.android.support:recyclerview-v7:25.3.1"
}

 

5. Default layout manager

布局管理决定RecycleView中显示的是什么数据。RecycleView 库中包含三个内置的布局管理。

  • LinearLayoutManager shows items in a vertical or horizontal scrolling list.

  • GridLayoutManager shows items in a grid.

  • StaggeredGridLayoutManager shows items in a staggered grid.

 

6. Relevant implementation classes to use RecyclerView

要实现RecyclerView需要实现几个类:

 

 

8. Layouts in recycler view

 

 

注意:

写一个自己的Adapter类,该类继承自ReCycleView.Aadpter,该类是一个抽象类:public static abstract class Adapter<VH extends ViewHolder>,其中的ViewHolder也是一个抽象类所以在这个自己的Adapter类中需要写一个继承Recycle.ViewHolder的类,该类的目的主要是在构造方法中队布局中的控件进行绑定操作,见下图代码

  public class ViewHolder extends RecyclerView.ViewHolder{
        public ImageView imageView;
        public TextView txtHeader;
        public TextView txtFooter;
        public View layout;

        public ViewHolder(View itemView) {
            super(itemView);
            layout = itemView;
            imageView = (ImageView)itemView.findViewById(R.id.imageView1);
            txtHeader = (TextView)itemView.findViewById(R.id.firstLine);
            txtFooter = (TextView)itemView.findViewById(R.id.secondLine);
        }
    }

自己的MyAdapter类还需有一个构造方法,一个参数用于传递显示的数据的值,一般用List<>类型参数来传递。

继承ReCycleView.Aadpter 则需要实现其 1)、OnCreatViewHolder(ViewGroup parent, int viewType),parent带表RecycleView实例的RootView.,在该方法中实例一个填充器。填充器从指定的布局.xml文件中填充一个新的View。再这个新的View加载控件:View为参数传给ViewHolder的方式。示例:

 
 
  @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.row_layout, parent, false);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }
2)、onBindViewHolder(MyAdapter.ViewHolder holder, int position),通过这个方法中的holder,来给每个控件赋值。实例:
    public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
        // - get element from your dataset at this position
        // - replace the contents of the view with that element
        String name = values.get(position);
        holder.txtHeader.setText(name);
//        holder.txtHeader.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                remove(this.position);
//            }
//        });
//        holder.imageView.setImageResource(R.drawable.ic_launcher);
        holder.txtFooter.setText("Footer: " + name);
    }
 
 

3)、getItemCount() 。通过这个方法得到条目数,内部定义:

@Override
    public int getItemCount() {
        return values.size();
    }

 

 

在MainActivity中

为RecycleView 设置 LayoutManager、Adapter。

 

学习来源:http://www.vogella.com/tutorials/AndroidRecyclerView/article.html

转载于:https://www.cnblogs.com/halo-yang/p/7243032.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值