RecycleView的三种实现方式

来源:互联网 发布:log4j 只输出sql 编辑:程序博客网 时间:2024/05/22 07:18

今天给大家分享一下RecycleView的三种实现方式,他可以代替ListView和GridView来实现各种布局效果。和大家分享一下我的代码,


就一个Activity类

把注释给去掉就能实现不同的效果这个就是一个简单的ListView。当然也需要一个item布局

package com.example.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;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 {    private List<String> data;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //模拟数据        data=new ArrayList<String>();        for (int i='A';i<='z';i++){            data.add(""+(char) i);        }        //找到Recyclerview        RecyclerView recylcer= (RecyclerView) findViewById(R.id.recyclerView);        //ListView效果的LinearLayoutManager        LinearLayoutManager mgr=new LinearLayoutManager(this);        //GridLayoutManager mgr=new GridLayoutManager(this,3);        //StaggeredGridLayoutManager mgr = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);        mgr.setOrientation(LinearLayoutManager.VERTICAL);        recylcer.setLayoutManager(mgr);        //设置适配器        recylcer.setAdapter(new MyAdapter());    }    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{        @Override        public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {            View v=getLayoutInflater().inflate(R.layout.item,null);            return new ViewHolder(v);        }        @Override        public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {            holder.textView.setText(data.get(position));            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(                    LinearLayout.LayoutParams.MATCH_PARENT,                    100+(int) (Math.random() * 50));            holder.imageView.setLayoutParams(lp);        }        @Override        public int getItemCount() {            return data.size();        }        class ViewHolder extends RecyclerView.ViewHolder{            TextView textView;            ImageView imageView;            public ViewHolder(View itemView) {                super(itemView);                textView=(TextView) itemView.findViewById(R.id.textView);                imageView=(ImageView) itemView.findViewById(R.id.imageView);            }        }    }}

阅读全文
0 0