RecyclerView 是ListView的增强版,优化了ListView的一些内存,样式问题。
基本用法
1.在app/build.gradle文件中加入
dependencies{
compile 'com.android.support:recycleview-v7:24.2.1'
}
2.点击Sync Now 同步一下
3.在xml文件中调用
<android.suppoert.v7.widget.RecyclerView
android:id="@+id/recycle"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
4.内容类(适配器)
package com.treeanimals.max.tecent;
import android.media.Image;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.util.List;
import ll.aidl.*;
/**
* Created by 95112 on 9/7/2017.
*/
public class BookAdapter extends RecyclerView.Adapter<BookAdapter.ViewHolder> {//首先新建一个 Adaper类,继承RecyclerView.Adapter
private List<Book> bookList;//内容类列表
public class ViewHolder extends RecyclerView.ViewHolder//定义了一个内部类 ViewHolder {
ImageView bookImage;
TextView bookName;
public ViewHolder(View itemView) { //ViewHolder的构造参数需要传入一个View参数,这个布局包含ImageView和 TextView
super(itemView);
bookImage = (ImageView) itemView.findViewById(R.id.bookImage);
bookName = (TextView)itemView.findViewById(R.id.bookName);
}
}
public BookAdapter(List<Book> bookList)
{//BookAdapter 构造传递函数需要传递一个 list
this.bookList = bookList;
}
//然后重写 onCreateBiewHolder(),onBindViewHolder() 和getItemCount()三个方法
//onCreateViewHolder用于创建BiewHolder实例
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.book_layout,parent,false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
//onBindViewHolder用于对RecyclerView子项进行复制,会在每个子项被滚动到屏幕内的时候执行。
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Book book = bookList.get(position);
holder.bookImage.setImageResource(book.getImageId());
holder.bookName.setText(book.getName());
}
//告诉RecyclerView一共有多少子项。
@Override
public int getItemCount() {
return bookList.size();
}
}
5.使用
package com.treeanimals.max.tecent;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by 95112 on 9/7/2017.
*/
public class RecycleActivity extends Activity {
private List<Book> bookList = new ArrayList<>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initBook();
RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recyclerview);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
BookAdapter adapter = new BookAdapter(bookList);
recyclerView.setAdapter(adapter);
}
private void initBook() {
Book book1 = new Book("《如何成为技术大牛》",R.drawable.ic_dashboard_black_24dp);
bookList.add(book1);
Book book2 = new Book("《如何成为技术大牛》",R.drawable.ic_dashboard_black_24dp);
bookList.add(book2);
Book book3 = new Book("《如何成为技术大牛》",R.drawable.ic_dashboard_black_24dp);
bookList.add(book3);
}
}