NewsListFragment.kt 3.5 KB
Newer Older
门心叼龙's avatar
门心叼龙 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package com.fly.tour.news.fragment

import android.content.Context
import android.os.Bundle
import android.os.Parcel
import android.os.Parcelable
import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.fly.tour.common.base.BaseAdapter
import com.fly.tour.common.base.BaseAdapter.OnItemClickListener
import com.fly.tour.common.base.BaseFragment
import com.fly.tour.common.base.BaseRefreshFragment
import com.fly.tour.common.event.KeyCode
import com.fly.tour.common.util.ToastUtil
import com.fly.tour.db.entity.NewsDetail
import com.fly.tour.db.entity.NewsType
门心叼龙's avatar
门心叼龙 已提交
18
import com.fly.tour.news.NewsDetailActivity
门心叼龙's avatar
门心叼龙 已提交
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
import com.fly.tour.news.R
import com.fly.tour.news.adapter.NewsListAdapter
import com.fly.tour.news.contract.NewsListContract
import com.fly.tour.news.model.NewsListModel
import com.fly.tour.news.presenter.NewsListPresenter

/**
 * Description: <NewsListFragment><br>
 * Author:      mxdl<br>
 * Date:        2020/2/16<br>
 * Version:     V1.0.0<br>
 * Update:     <br>
 */
/**
 * Description: <NewsListFragment><br>
 * Author:      mxdl<br>
 * Date:        2020/2/16<br>
 * Version:     V1.0.0<br>
 * Update:     <br>
 */
class NewsListFragment :
    BaseRefreshFragment<NewsListModel, NewsListContract.View<NewsDetail>, NewsListPresenter, NewsDetail>(),
    NewsListContract.View<NewsDetail> {
    private var mNewsType: NewsType? = null
    private var mNewsListAdapter: NewsListAdapter? = null
    private var mRecViewNewsDetail: RecyclerView? = null
    override fun onAttach(context: Context) {
        super.onAttach(context)
        mNewsType = arguments?.getParcelable(KeyCode.News.NEWS_TYPE)
    }

    override fun onBindLayout(): Int {
        return R.layout.fragment_news_list
    }

    override fun initView(view: View) {
        mRecViewNewsDetail = view.findViewById(R.id.recview_news_list)
门心叼龙's avatar
门心叼龙 已提交
56 57
        mRecViewNewsDetail?.layoutManager = LinearLayoutManager(context)
        mNewsListAdapter = NewsListAdapter(context!!)
门心叼龙's avatar
门心叼龙 已提交
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
        mRecViewNewsDetail?.adapter = mNewsListAdapter
    }

    override fun enableLazyData(): Boolean {
        return true
    }

    override fun initData() {
        mPresenter?.newsType = mNewsType!!.id
        autoLoadData()
    }

    override fun initListener() {
        mNewsListAdapter?.setItemClickListener(object : OnItemClickListener<NewsDetail> {
            override fun onItemClick(e: NewsDetail, position: Int) {
门心叼龙's avatar
门心叼龙 已提交
73
                NewsDetailActivity.startNewsDetailActivity(mActivity,e.id)
门心叼龙's avatar
门心叼龙 已提交
74 75 76 77 78 79 80 81 82 83 84 85 86
            }
        })
    }

    override fun onBindRreshLayout(): Int {
        return R.id.refview_news_list
    }

    override fun initPresenter(): NewsListPresenter {
        return NewsListPresenter(mActivity)
    }

    override fun refreshData(data: List<NewsDetail>) {
门心叼龙's avatar
门心叼龙 已提交
87
        mNewsListAdapter?.refresh(data)
门心叼龙's avatar
门心叼龙 已提交
88 89 90
    }

    override fun loadMoreData(data: List<NewsDetail>) {
门心叼龙's avatar
门心叼龙 已提交
91
        mNewsListAdapter?.addAll(data)
门心叼龙's avatar
门心叼龙 已提交
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
    }

    override fun onRefreshEvent() {
        mPresenter?.refreshData()
    }

    override fun onLoadMoreEvent() {
        mPresenter?.loadMoreData()
    }

    override fun onAutoLoadEvent() {
        mPresenter?.refreshData()
    }

    override val toolbarTitle: String
        get() = ""

    companion object {
        fun newInstance(newsType: NewsType): NewsListFragment {
            var newsListFragment = NewsListFragment()
            var bundle = Bundle()
            bundle.putParcelable(KeyCode.News.NEWS_TYPE, newsType)
            newsListFragment.arguments = bundle
            return newsListFragment
        }
    }

}