当前位置:   article > 正文

Android开发记录(九)-Flexbox和RecyclerView实现流式布局_recyclerview flexboxlayoutmanager

recyclerview flexboxlayoutmanager

通过Flexbox实现流式布局,效果:

  1. RecyclerView结合FlexboxLayoutManager实现流式布局

  1.        FlexboxLayoutManager manager=new FlexboxLayoutManager(getContext());
  2. //设置主轴排列形式
  3. manager.setFlexDirection(FlexDirection.ROW);
  4. //设置是否换行
  5. manager.setFlexWrap(FlexWrap.WRAP);
  6. binding.navRv.setLayoutManager(manager);
  7. navListAdapter = new NavListAdapter(navResponseList,getContext());
  8. binding.navRv.setAdapter(navListAdapter);
  1. 通过getItemViewType重写,实现RecyclerView二级列表展示,根据type区分不同View展示数据

  1. import android.content.Context;
  2. import android.view.LayoutInflater;
  3. import android.view.View;
  4. import android.view.ViewGroup;
  5. import androidx.annotation.NonNull;
  6. import androidx.databinding.DataBindingUtil;
  7. import androidx.recyclerview.widget.RecyclerView;
  8. import com.jetpack.demo.R;
  9. import com.jetpack.demo.databinding.NavItemBinding;
  10. import com.jetpack.demo.databinding.NavSuperItemBinding;
  11. import com.jetpack.demo.databinding.TopItemBinding;
  12. import com.jetpack.demo.model.home.TopResponse;
  13. import com.jetpack.demo.model.nav.NavResponse;
  14. public class NavListAdapter extends RecyclerView.Adapter {
  15. private List<NavResponse.Articles> navResponses;
  16. private Context mContext;
  17. private int TYPE_SUPER = 0;
  18. private int TYPE_CHILD = 1;
  19. public NavListAdapter(List<NavResponse.Articles> navResponses, Context mContext) {
  20. this.navResponses = navResponses;
  21. this.mContext = mContext;
  22. }
  23. @NonNull
  24. @NotNull
  25. @Override
  26. public RecyclerView.ViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
  27. LayoutInflater inflater = LayoutInflater.from(mContext);
  28. if (viewType == TYPE_CHILD){
  29. NavItemBinding binding = DataBindingUtil.inflate(inflater, R.layout.nav_item,parent,false);
  30. return new MyViewHolder(binding.getRoot());
  31. }else {
  32. NavSuperItemBinding binding = DataBindingUtil.inflate(inflater, R.layout.nav_super_item,parent,false);
  33. return new MyViewHolder(binding.getRoot());
  34. }
  35. }
  36. @Override
  37. public void onBindViewHolder(@NonNull @NotNull RecyclerView.ViewHolder holder, int position) {
  38. NavResponse.Articles articles = navResponses.get(position);
  39. if (articles.chapterName == null){
  40. NavSuperItemBinding binding = DataBindingUtil.getBinding(holder.itemView);
  41. binding.tvNav.setText(navResponses.get(position).title);
  42. binding.executePendingBindings();
  43. }else {
  44. NavItemBinding binding = DataBindingUtil.getBinding(holder.itemView);
  45. binding.tvNav.setText(navResponses.get(position).title);
  46. binding.executePendingBindings();
  47. }
  48. }
  49. @Override
  50. public int getItemViewType(int position) {
  51. NavResponse.Articles articles = navResponses.get(position);
  52. return articles.chapterName == null?TYPE_SUPER:TYPE_CHILD;
  53. }
  54. @Override
  55. public int getItemCount() {
  56. return navResponses.size();
  57. }
  58. class MyViewHolder extends RecyclerView.ViewHolder{
  59. public MyViewHolder(@NonNull @NotNull View itemView) {
  60. super(itemView);
  61. }
  62. }
  63. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/174780
推荐阅读
相关标签
  

闽ICP备14008679号