可參考視訊(有完整的講解):天哥在奔跑
實作水準滾動功能
與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,這樣是為了友善改布局。