可参考视频(有完整的讲解):天哥在奔跑
实现水平滚动功能
与RecyclerView(一)的实现基本一样
public class HorRecyclerViewActivity extends AppCompatActivity {
private RecyclerView mRvHor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hor_recycler_view);
mRvHor = findViewById(R.id.rv_hor);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(HorRecyclerViewActivity.this);
linearLayoutManager.setOrientation(RecyclerView.HORIZONTAL);
mRvHor.setLayoutManager(linearLayoutManager);
mRvHor.addItemDecoration(new MyDecoration());
mRvHor.setAdapter(new HorAdapter(HorRecyclerViewActivity.this, new HorAdapter.OnItemClickListener() {
@Override
public void OnClick(int pos) {
Toast.makeText(HorRecyclerViewActivity.this, "click.."+pos,Toast.LENGTH_SHORT).show();
}
}));
}
//分割线
class MyDecoration extends RecyclerView.ItemDecoration{
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
outRect.set(0,0,getResources().getDimensionPixelOffset(R.dimen.DividerHeight),0);
}
}
}
网格布局
public class GridRecyclerViewActivity extends AppCompatActivity {
private RecyclerView mRvGrid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid_recycler_view);
mRvGrid = findViewById(R.id.rv_grid);
mRvGrid.setLayoutManager(new GridLayoutManager(GridRecyclerViewActivity.this,3));
mRvGrid.setAdapter(new GridAdapter(GridRecyclerViewActivity.this, new GridAdapter.OnItemClickListener() {
@Override
public void OnClick(int pos) {
Toast.makeText(GridRecyclerViewActivity.this,"click..."+pos,Toast.LENGTH_SHORT).show();
}
}));
}
}
这些都是差不多的,Adapter是可以用一个的,我这虽然Adapter的名字不一样,但是里面的内容是一样的,只是我对每一种布局都设置了一个Adapter,这样是为了方便改布局。