1. build.gradle的dependecies中添加,添加完点击Sync Now来同步
compile 'com.android.support:recyclerview-v7:26.1.0'
2.布局中加入RecycleView,由于RecycleView 不是内置SDK中,需要把完整包名写出
<android.support.v7.app.widget.RecycleView
android:id="@+id/recycleView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
3.新建FruitAdapter 继承 RecycleView.Adapter,指定泛型为FruitAdapter.ViewHolder,其中ViewHolder为FruitAdapter 中的内部类
RecycleView 点击事件
public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder>
{
private List<Fruit> fruitList;
public static class ViewHolder extends RecyclerView.ViewHolder
{
View fruitView;
ImageView imageView;
TextView textView;
public ViewHolder(View view)
{
super(view);
imageView = view.findViewById(R.id.image);
textView = view.findViewById(R.id.name);
}
}
public FruitAdapter(List<Fruit> list)
{
fruitList = list;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_fruit, parent, false);
final ViewHolder viewHolder = new ViewHolder(view);
viewHolder.fruitView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
int positon = viewHolder.getAdapterPosition();
Fruit fruit = fruitList.get(positon);
}
});
// 子项点击
viewHolder.imageView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
}
});
return viewHolder;
}
//给控件赋值,当每个子项滚动到屏幕显示时候执行
@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
Fruit fruit = fruitList.get(position);
holder.imageView.setImageResource(fruit.getImageId());
holder.textView.setText(fruit.getFruitName());
}
//告诉RecycleView 有几个子项
@Override
public int getItemCount()
{
return fruitList.size();
}
}
4.LayoutManager用于指定RecycleView 的布局方式,LinearLayoutManager是线性布局
GridLayoutManager:实现网格布局
StaggeredGridLayoutManager:瀑布流布局
public class MainActivity extends AppCompatActivity
{
private List<Fruit> fruitList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
RecyclerView recyclerView = findViewById(R.id.recycleView);
LinearLayoutManager manager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(manager);
FruitAdapter adapter = new FruitAdapter(fruitList);
recyclerView.setAdapter(adapter);
}
}