首先在build.guide中添加代码:compile 'com.android.support.support:recyclerview-v7:(Android API版本 如26.0.0 )'
然后在布局中应用:
<LinearLayout ........../>
<android.support.v7.widget.RecyclerView
android:id=...
//长宽等各种属性
/>
</LinearLayout>
用RecyclerView实现和ListView相同的效果,首先要为RecyclerView准备一个适配器,假如是要实现水果图标和名称的显示,则命名适配器为FruitAdapter,它继承自RecyclerView.Adapter,并且把泛型定为<FruitAdapter.ViewHolder>
代码:
public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder>{
private List<Fruit> mFruitList;
//定义一个静态的内部类ViewHolder继承自RecyclerView.ViewHolder,并且重写它的构造方法
static class ViewHolder extends RecyclerView.ViewHolder{
ImageView fruitimage;
TextView fruitname;
public ViewHolder(View view){
super(view);
fruitImage = (ImageView) view.findViewById(R.id.fruit_image);
fruitName = (TextView) view.findViewById(R.id.fruit_name);
}
}
public FruiAdapter(List<Fruit> fruitList){
mFruitList = fruitList;
}
//重写方法OnCreateViewHolder,onBindViewHolder,getItemCount
@Override
public ViewHolder OnCreateViewHolder(ViewGroup parent,int view Type){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder,int positon){
Fruit fruit = mFruitList.get(position);
holder.fruitImage.setImageResource(fruit.getImageId());
holder.fruitName.setText(fruit.getName());
}
@Override
public int getItemCount(){
return mFruitList.size();
}
}
实现RecyclerView,
private List<Fruit> fruitList = new ArrayList<>();
@Override
protected void onCreate(Bundle saveInstanceState){
...
initFruits();//初始化水果数据
RecyclerView recyclerview = (RecyclerView) findViewById(R.id.recycler_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerview.setLayoutManager(layoutManager);
FruitAdapter adapter = new FruitAdapter(fruitList);
recyclerview.setAdapter(adapter);
}
private void initFruits(){
for(int i = 0; i < 2; i++){
Fruit apple = new Fruit("Apple",picture_apple);
fruitList.add(apple);
....
}
}