RecyclerView使用
记录下RecyclerView的用法:
- 添加布局
- RecyclerView子项布局
- 适配器RecyclerView Adapter
- *绑定
添加布局
直接添加 RecyclerView标签
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycle"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
RecyclerView子项布局
新建一个布局文件 gvitem,用于设计每个子项的布局,这里添加一个图片和文本。
<ImageView
android:id="@+id/iv"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:scaleType="centerInside" />
<TextView
android:id="@+id/tv"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_gravity="center_vertical"
android:layout_marginStart="110dp"
android:textColor="@color/textColor"
android:textSize="13sp" />
适配器RecyclerView Adapter
新建一个适配器类,继承RecyclerView.Adapter,具体实现:
public class AnimalAdapter extends RecyclerView.Adapter <AnimalAdapter.viewHolder>{
private List<Animal> list;//Animal为需要放在RecyclerView中的实体类
@Override //实现RecyclerView.Adapter中的方法,返回内部类viewHolder对象
public viewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.gvitem,parent,false);
viewHolder holder=new viewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(viewHolder holder, int position) {
holder.animalName.setText(list.get(position).getAnimalname().toString());
holder.animalImage.setImageResource(list.get(position).getImageId());
}
@Override
public int getItemCount() {
return list.size();
}
//viewHolder内部类
static class viewHolder extends RecyclerView.ViewHolder{
TextView animalName;
ImageView animalImage;
public viewHolder(View itemView) {
super(itemView);
animalName=itemView.findViewById(R.id.tv);
animalImage=itemView.findViewById(R.id.iv);
}
}
public AnimalAdapter(List<Animal> list) {
this.list = list;
}
}
绑定适配器
Animal实体类
public class Animal {
private String animalname;
private int ImageId;
public Animal(String animalname,int ImageId) {
this.animalname=animalname;
this.ImageId=ImageId;
}
public String getAnimalname() {
return animalname;
}
public int getImageId() {
return ImageId;
}
}
在Activity中将RecyclerView与适配器绑定
public class MainActivity extends AppCompatActivity {
Animal animal;
List<Animal> animalList=new ArrayList<>();
@BindView(R.id.recycle)
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
String name[]={"老鼠","奶牛","瓢虫","苍蝇","兔子","大象","公鸡"};
int Image[]={R.mipmap.first,R.mipmap.second,R.mipmap.third,R.mipmap.fourth,R.mipmap.fith
,R.mipmap.sith,R.mipmap.seveth};
for (int i=0;i<Image.length;i++)
{
animal=new Animal(name[i],Image[i]);
animalList.add(animal);
}
LinearLayoutManager linearLayout=new LinearLayoutManager(this);
/*若要实现横向滚动则添加linearLayout.setOrientation(LinearLayoutManager.HORIZONTAL);*/
recyclerView.setLayoutManager(linearLayout);
AnimalAdapter adapter=new AnimalAdapter(animalList);
recyclerView.setAdapter(adapter);
}
}
最终效果: