RecycleView的三种实现方式
今天给大家分享一下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); } } } }