RecycleView的用法
build.gradle中加入:
compile 'com.android.support:recyclerview-v7:23.1.1'
布局文件引入:
<android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" />
代码:
RecyclerView recycleView = (RecyclerView) findViewById(R.id.recyclerView);
准备要填充的数据
private void initData() { urls = new ArrayList<>(); urls.add(url1); urls.add(url2); urls.add(url3); urls.add(url4); urls.add(url5); urls.add(url6); urls.add(url7); urls.add(url8); urls.add(url9); urls.add(url10); }
准备适配器
public class MyAdapter extends RecyclerView.Adapter<MyVH> { private Context context; private List<String> urls; public MyAdapter(Context context, List<String> urls) { this.context = context; this.urls = urls; } //★1.onCreateViewHolder: //充气Item的View,并且以此View作为一个参数创建ViewHolder,并且返回此VH @Override public MyVH onCreateViewHolder(ViewGroup parent, int viewType) { LayoutInflater inflater = LayoutInflater.from(context); // 要按照下面方式inflate布局,不然会出现match_parent无效,另外要让recyclerView宽高为match_parent(不一定) View view = inflater.inflate(R.layout.item, parent,false); return new MyVH(view); } //★2.onBindViewHolder: //在这里把List里的数据绑定到Item控件上 @Override public void onBindViewHolder(MyVH holder, int position) { Picasso.with(context).load(urls.get(position)).resize(300, 300).error(R.mipmap.qq).placeholder(R.mipmap.ic_launcher).into(holder.iv); } //★3.getItemCount //返回List的长度 @Override public int getItemCount() { return urls.size(); } //★★★创建一个VH的子类,在这里执行findViewById,找到所有需要的控件 public class MyVH extends RecyclerView.ViewHolder { public ImageView iv; public MyVH(View itemView) { super(itemView); iv = (ImageView) itemView.findViewById(R.id.iv); } } }
给recycleView设置布局形式(setLayoutManager)和适配器(setAdapter)
MyAdapter myAdapter = new MyAdapter(context, urls); LinearLayoutManager manager = new LinearLayoutManager (context, LinearLayoutManager.VERTICAL, false); recycleView.setLayoutManager(manager); recycleView.setAdapter(myAdapter);
设置分割线
设置动画效果
通过接口回调实现setOnItemClick事件