RecyclerView的基本用法

虽然之前知道这个,但是一直没有用过,所以就试了一下。

public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private List<String> mList = new ArrayList<String>();

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

        initData();
        recyclerView = (RecyclerView)findViewById(R.id.recycleView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
        recyclerView.setHasFixedSize(true);
        recyclerView.setAdapter(new MyAdapter());

    }

    public void initData(){
        for(int i = 0;i<20;i++){
            mList.add("item:"+i);
        }
    }


    class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{

        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.adpter_layout,parent,false);
            MyViewHolder myViewHolder = new MyViewHolder(view);

            return myViewHolder;
        }

        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {
            holder.textView.setText(mList.get(position));
        }

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

    class MyViewHolder extends RecyclerView.ViewHolder{

        TextView textView;

        public MyViewHolder(View itemView) {
            super(itemView);
            textView = (TextView)itemView.findViewById(R.id.textView);
        }
    }
}

这里需要注意的一个地方就是

View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.adpter_layout,parent,false);

之前在设置这样,然后item的layout的都是match_parent,所以运行的结果只显示第一条数据。

后来看了别人的,说把

View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.adpter_layout,null,false);

改成这样,确实可以出现所有的数据,但是这样好像会造成一些问题。

之后,才知道,RecyclerView和ListView相比没那么智能,它并不会自适应item的大小,如果

RecyclerView的layout都设置成match_parent,他一个数据就会占满整个页面,所以在写item的布局文件时要注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值