以显示下图效果为例
1,创建要显示的子项对象
public class Item {
private int image;
private String name;
public Item(String name,int image) {
this.image = image;
this.name = name;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2,创建一个RecyclerView的适配器
package com.example.myapplication;
import android.support.annotation.NonNull;
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.TextView;
import java.util.List;
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
public List<Item>data;//传入的子项list
static class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
ImageView imageView;
public ViewHolder(@NonNull View itemView) {
//itemView为传入的子项的最外层布局,这样就可以在这里获取到子项的控件
super(itemView);
textView = itemView.findViewById(R.id.textView);
imageView = itemView.findViewById(R.id.imageView);
}
}
public RecyclerViewAdapter(List<Item> data) {
super();
this.data = data;
//传入数据源
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//创建viewHolder实例,绘制一个子项布局的view,然后把View传入构造函数中,最后将这个viewHolder返回
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
//对RecyclerView的子项的数据进行赋值,会在每个子项被滚动到屏幕内的时候执行
// 通过i得到当前项的Item实例,然后将数据设置到ViewHolder的imageView和TextView中即可
Item item = data.get(i);
viewHolder.textView.setText(item.getName());
viewHolder.imageView.setBaseline(item.getImage());
}
@Override
public int getItemCount() {
return data.size();
}
}
3,初始化数据,传入并实例化recyclerView,设置布局管理器
package com.example.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<Item> itemlist = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initList();
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new RecyclerViewAdapter(itemlist));
}
void initList(){
for (int i = 0; i < 5; i++) {
Item item = new Item("aaa"+i, R.drawable.ic_launcher_background);
itemlist.add(item);
}
}
}