RecyclerView+Fragment實(shí)現(xiàn)

在文件存儲(chǔ)部分,利用RecyclerView和SQLite搭建了一個(gè)讀取本地?cái)?shù)據(jù)庫內(nèi)容將其顯示到列表的demo,這里需要注意的就是數(shù)據(jù)庫的基礎(chǔ)操作和RecyclerView的適配器部分,還需要熟練其流程才能掌握。今天的內(nèi)容是結(jié)合之前做的底部導(dǎo)航欄,在切換fragment的時(shí)候顯示列表,其實(shí)實(shí)現(xiàn)過程和在Activity里面是類似的。

一、流程

還是梳理一下具體的流程,我的流程如下:

  1. 在fragment的布局文件中加入RecyclerView的控件;
  2. 寫一個(gè)要顯示的item布局;
  3. 寫一個(gè)POJO類,即一個(gè)Item類,設(shè)置要顯示的變量和構(gòu)造器,setter and getter;
  4. 寫一個(gè)工廠類,用于制造item;
  5. 主要的是適配器的書寫
  6. 在fragment里面實(shí)例化,設(shè)置一些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);

        }
    }
}

二、 注意事項(xiàng)

在fragment實(shí)例化的時(shí)候注意fragment的生命周期,要在onCreateView()中進(jìn)行。

@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的使用

今天還測(cè)試了一下Gson的使用,解析json數(shù)據(jù)??梢越Y(jié)合item的數(shù)據(jù)用Gson解析后進(jìn)行顯示

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,040評(píng)論 25 709
  • 【Android 控件 RecyclerView】 概述 RecyclerView是什么 從Android 5.0...
    Rtia閱讀 308,455評(píng)論 27 440
  • 歲月?lián)u碎駝鈴 夢(mèng)在酒中氤氳 春殘了 只嘆夏 紗中穿過 清風(fēng)吹 一杯獨(dú)樽 夢(mèng)停留 憶往昔 是秋的離愁 風(fēng)悠悠 寂寞冬...
    納蘭玖蘭閱讀 274評(píng)論 0 0
  • 到底什么是愛情 從前覺得嫁給一個(gè)自己怦然心動(dòng)的男人便是愛情,后來覺得嫁給一個(gè)自己堅(jiān)守到底的男人才是愛情,最后...
    旅行的貓X閱讀 207評(píng)論 0 0
  • “save one more ”這句臺(tái)詞出自電影《血戰(zhàn)鋼鋸嶺》。在影院聽到這句臺(tái)詞時(shí)很多人熱淚盈眶(鯨魚偷看了)...
    鯨魚我愛你閱讀 722評(píng)論 3 4

友情鏈接更多精彩內(nèi)容