RecyclerView+Fragment实现

在文件存储部分,利用RecyclerView和SQLite搭建了一个读取本地数据库内容将其显示到列表的demo,这里需要注意的就是数据库的基础操作和RecyclerView的适配器部分,还需要熟练其流程才能掌握。今天的内容是结合之前做的底部导航栏,在切换fragment的时候显示列表,其实实现过程和在Activity里面是类似的。

一、流程

还是梳理一下具体的流程,我的流程如下:

  1. 在fragment的布局文件中加入RecyclerView的控件;
  2. 写一个要显示的item布局;
  3. 写一个POJO类,即一个Item类,设置要显示的变量和构造器,setter and getter;
  4. 写一个工厂类,用于制造item;
  5. 主要的是适配器的书写
  6. 在fragment里面实例化,设置一些RecyclerView的属性

贴上适配器的代码

public class HomeAdapter extends RecyclerView.Adapter <HomeAdapter.MyHolder>{
    Context context;
    private List<HomeItem> list;

    public HomeAdapter(Context context, List<HomeItem> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from (parent.getContext ()).inflate (R.layout.home_list_item_layout,parent,false);
        MyHolder holder = new MyHolder (view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyHolder holder, int position) {
        HomeItem item = list.get (position);
        Glide.with (context).load (item.getImgUrl ()).into (holder.ivImage);
        holder.tvTitle.setText (item.getImgTitle ());
        holder.tvAuthor.setText (item.getImgAuthor ());
        holder.tvInfo.setText (item.getImgInfo ());

    }

    @Override
    public int getItemCount() {
        return list.size ();
    }

    class MyHolder extends RecyclerView.ViewHolder {
        RelativeLayout itemLayout;
        ImageView ivImage;
        TextView tvTitle;
        TextView tvAuthor;
        TextView tvInfo;
        public MyHolder(View itemView) {
            super (itemView);
            itemLayout = itemView.findViewById (R.id.home_list_item_layout_rl);
            ivImage = itemView.findViewById (R.id.home_list_item_image_iv);
            tvTitle = itemView.findViewById (R.id.home_list_item_title_tv);
            tvAuthor = itemView.findViewById (R.id.home_list_item_author_tv);
            tvInfo = itemView.findViewById (R.id.home_list_item_info_tv);

        }
    }
}

二、 注意事项

在fragment实例化的时候注意fragment的生命周期,要在onCreateView()中进行。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_home, container, false);
        mRecyclerView = view.findViewById (R.id.home_recycler_view_layout);
        homeAdapter = new HomeAdapter (getActivity (),list);
        mRecyclerView.setLayoutManager (new LinearLayoutManager (getActivity (),LinearLayoutManager.VERTICAL,false));
        mRecyclerView.setItemAnimator (new DefaultItemAnimator ());
        mRecyclerView.setAdapter (homeAdapter);
        mRecyclerView.addItemDecoration (new DividerItemDecoration (getActivity (),DividerItemDecoration.VERTICAL));
        return view;
    }

三、 Gson的使用

今天还测试了一下Gson的使用,解析json数据。可以结合item的数据用Gson解析后进行显示

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,366评论 25 709
  • 【Android 控件 RecyclerView】 概述 RecyclerView是什么 从Android 5.0...
    Rtia阅读 308,082评论 27 439
  • 岁月摇碎驼铃 梦在酒中氤氲 春残了 只叹夏 纱中穿过 清风吹 一杯独樽 梦停留 忆往昔 是秋的离愁 风悠悠 寂寞冬...
    纳兰玖兰阅读 261评论 0 0
  • 到底什么是爱情 从前觉得嫁给一个自己怦然心动的男人便是爱情,后来觉得嫁给一个自己坚守到底的男人才是爱情,最后...
    旅行的猫X阅读 196评论 0 0
  • “save one more ”这句台词出自电影《血战钢锯岭》。在影院听到这句台词时很多人热泪盈眶(鲸鱼偷看了)...
    鲸鱼我爱你阅读 606评论 3 4