首先,先要知道RecyclerView是什么
简单来说,RecyclerView就是Listview的翻版,只不过相比较后者,功能更加强大。
强大之处:标准化了ViewHolder,支持瀑布流等多种样式,针对一个Item的显示RecyclerView专门抽取出了相应的类,来控制Item的显示,使其的扩展性非常强
缺点:用RecyclerView时候,需要我们自己来实现Item的点击和长按等事件的处理
用法:
rv = (RecyclerView) findViewById(R.id.rv); // 设置布局管理器 rv.setLayoutManager(mLayoutManager); // 设置adapter rv.setAdapter(mAdapter); // 设置Item添加和移除的动画 rv.setItemAnimator(new DefaultItemAnimator()); // 设置Item之间间隔样式 rv.addItemDecoration(mDividerItemDecoration);
mainActivity
public class MainActivity extends AppCompatActivity { private RecyclerView rv; private LinearLayoutManager mlinearLayoutManager; private MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); InitData(); InitView(); } private void InitData() { mlinearLayoutManager = new LinearLayoutManager(this); myAdapter = new MyAdapter(getData()); } public void InitView() { rv = (RecyclerView) findViewById(R.id.rv); } private ArrayList<String> getData() { ArrayList<String> data = new ArrayList<>(); for (int x = 0; x < 20; x++) { data.add("num" + x); } return data; } }
Adapter
package com.example.wurenxiangwo.recyclerview; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList; /** * Created by wurenxiangwo on 2017/11/26. */ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private ArrayList<String> data; public MyAdapter(ArrayList<String> data) { this.data = data; } public void UpDatadata(ArrayList<String> data){ this.data = data; notifyDataSetChanged(); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_item, parent, false); ViewHolder viewHolder = new ViewHolder(v); return viewHolder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.mtv.setText(data.get(position)); } @Override public int getItemCount() { return data == null ? 0 : data.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { TextView mtv; public ViewHolder(View itemView) { super(itemView); mtv = (TextView) itemView.findViewById(R.id.tv); } } }