Commit 0e171b64 authored by wanglei's avatar wanglei

...

parent 93e17847
......@@ -11,4 +11,11 @@ class NewsBean(
val type: Int = 0,
val linkPath: String = "",//网站链接
) {
}
\ No newline at end of file
}
// 栏目类别 0:最新 , 101 :政治, 301:体育 ,娱乐:501 ,
//世界:2401,生活方式:2001,公共安全:1802,经济:401
class NewsCategory(
val id: Int = 0,
val name: String = ""
)
\ No newline at end of file
package com.base.browserwhite.ui.activity.news
import android.graphics.Color
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import com.base.browserwhite.bean.NewsCategory
import com.base.browserwhite.databinding.ActivityNewsBinding
import com.base.browserwhite.databinding.ItemTabNewsBinding
import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.adapter.NewsAdapter
import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.NewsUtils
import com.chad.library.adapter4.QuickAdapterHelper
import com.chad.library.adapter4.loadState.LoadState
import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter
class NewsActivity : BaseActivity<ActivityNewsBinding>() {
private val TAG = "NewsActivity"
override val binding: ActivityNewsBinding by lazy {
ActivityNewsBinding.inflate(layoutInflater)
}
private lateinit var newsAdapter: NewsAdapter
private lateinit var helper: QuickAdapterHelper
private var isLoading = false
private var currentCategory: Int = 0
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
newsAdapter = NewsAdapter(false, clickAction = {
})
helper =
QuickAdapterHelper.Builder(newsAdapter).setTrailingLoadStateAdapter(object : TrailingLoadStateAdapter.OnTrailingListener {
override fun onLoad() {
LogEx.logDebug(TAG, "onLoad")
requestMore(currentCategory)
}
override fun onFailRetry() {
LogEx.logDebug(TAG, "onFailRetry")
requestMore(currentCategory)
}
override fun isAllowLoading(): Boolean {
LogEx.logDebug(TAG, "isLoading=$isLoading")
return !isLoading
}
}).build()
binding.rv.adapter = helper.adapter
val category = arrayOf(
NewsCategory(0, "Latest"),
NewsCategory(101, "Political"),
NewsCategory(301, "Sports"),
NewsCategory(501, "Entertainment"),
NewsCategory(2401, "Word"),
NewsCategory(2001, "Lifestyle"),
NewsCategory(1802, "Public Safety"),
NewsCategory(401, "Economic"),
)
category.forEach { bean ->
val tabBinding = ItemTabNewsBinding.inflate(layoutInflater)
tabBinding.tv.text = bean.name
binding.tabLayout.addView(tabBinding.root)
}
binding.tabLayout.observeIndexChange { fromIndex, toIndex, reselect, fromUser ->
if (!reselect) {
val bean = category[toIndex]
currentCategory = bean.id
requestMore(bean.id, true)
}
}
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
finishToMain()
}
binding.ivGuanbi.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
}
private fun requestMore(categoryId: Int, changeCategory: Boolean = false) {
isLoading = true
helper.trailingLoadState = LoadState.None
val lastNewsId = newsAdapter.getLastPageNumber()
LogEx.logDebug(TAG, "requestMore lastNewsId=$lastNewsId")
NewsUtils.requestNews(categoryId = categoryId, pageNumber = lastNewsId, errorCallBack = {
isLoading = false
LogEx.logDebug(TAG, "errorCallBack")
}, beanCallBack = {
isLoading = false
binding.root.post {
LogEx.logDebug(TAG, "beanCallBack")
if (lastNewsId == null || changeCategory) {
newsAdapter.submitList(it)
} else {
newsAdapter.addAll(it)
}
helper.trailingLoadState = LoadState.NotLoading(false)
}
})
}
}
\ No newline at end of file
......@@ -7,6 +7,7 @@ import androidx.activity.addCallback
import com.base.browserwhite.bean.ConstObject.JUNK_CLEANER
import com.base.browserwhite.databinding.ActivityResultBinding
import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.activity.news.NewsActivity
import com.base.browserwhite.ui.activity.news.NewsDetailActivity
import com.base.browserwhite.ui.activity.webbrowser.WebBrowserActivity
import com.base.browserwhite.ui.adapter.NewsAdapter
......@@ -47,11 +48,16 @@ class ResultActivity : BaseActivity<ActivityResultBinding>() {
}
}
}
newsAdapter = NewsAdapter { url ->
startActivity(Intent(this, NewsDetailActivity::class.java).apply {
putExtra("url", url)
})
}
newsAdapter = NewsAdapter(
clickAction = { url ->
startActivity(Intent(this, NewsDetailActivity::class.java).apply {
putExtra("url", url)
})
},
moreAction = {
}
)
helper =
QuickAdapterHelper.Builder(newsAdapter).setTrailingLoadStateAdapter(object : TrailingLoadStateAdapter.OnTrailingListener {
override fun onLoad() {
......
......@@ -5,6 +5,7 @@ import android.content.Context
import android.graphics.drawable.Drawable
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.browserwhite.R
import com.base.browserwhite.bean.NewsBean
......@@ -20,7 +21,8 @@ import com.bumptech.glide.request.target.Target
import com.chad.library.adapter4.BaseQuickAdapter
class NewsAdapter(
val clickAction: (url: String) -> Unit
val showMore: Boolean = true,
val clickAction: (url: String) -> Unit, val moreAction: (() -> Unit)? = null
) : BaseQuickAdapter<NewsBean, NewsAdapter.NewsViewHolder>() {
private val TAG = "NewsAdapter"
......@@ -41,7 +43,7 @@ class NewsAdapter(
val binding = ItemNewsBinding.bind(holder.itemView)
if (items.first() == item) {
if (items.first() == item && showMore) {
binding.ll.visibility = View.VISIBLE
} else {
binding.ll.visibility = View.GONE
......@@ -79,6 +81,9 @@ class NewsAdapter(
binding.root.setOnClickListener {
clickAction.invoke(item.linkPath)
}
binding.tvMore.setOnClickListener {
moreAction?.invoke()
}
}
fun getLastPageNumber(): Long? {
......
......@@ -22,6 +22,7 @@ import com.base.browserwhite.bean.webSiteGroupBeanList
import com.base.browserwhite.databinding.FragmentHomeBinding
import com.base.browserwhite.service.StayNotificationService.Companion.restartStartStayNotification
import com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity
import com.base.browserwhite.ui.activity.news.NewsActivity
import com.base.browserwhite.ui.activity.news.NewsDetailActivity
import com.base.browserwhite.ui.activity.scanqrc.ScanQRCActivity
import com.base.browserwhite.ui.activity.webbrowser.WebBrowserActivity
......@@ -68,11 +69,17 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
override fun setView() {
newsAdapter = NewsAdapter { url ->
requireContext().startActivity(Intent(requireContext(), NewsDetailActivity::class.java).apply {
putExtra("url", url)
newsAdapter = NewsAdapter(
clickAction = { url ->
requireContext().startActivity(Intent(requireContext(), NewsDetailActivity::class.java).apply {
putExtra("url", url)
})
},
moreAction = {
startActivity(Intent(requireContext(), NewsActivity::class.java).apply {
})
})
}
helper =
QuickAdapterHelper.Builder(newsAdapter).setTrailingLoadStateAdapter(object : TrailingLoadStateAdapter.OnTrailingListener {
override fun onLoad() {
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.activity.news.NewsActivity">
android:orientation="vertical"
tools:context=".ui.activity.webstore.WevStoreActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="UselessParent">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginVertical="15dp"
android:layout_marginStart="15dp"
android:text="News"
android:textColor="@color/black"
android:textSize="25sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<ImageView
android:id="@+id/iv_guanbi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="18dp"
android:src="@mipmap/w_guanbi"
tools:ignore="ContentDescription" />
</FrameLayout>
<com.angcyo.tablayout.DslTabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="10dp"
app:tab_deselect_color="@color/black"
app:tab_divider_solid_color="@android:color/transparent"
app:tab_divider_width="16dp"
app:tab_draw_divider="true"
app:tab_enable_ico_color="false"
app:tab_indicator_style="STYLE_NONE"
app:tab_select_color="@color/white" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="false"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_news" />
</LinearLayout>
\ No newline at end of file
......@@ -34,7 +34,6 @@
android:textColor="#0571ED"
android:textSize="15sp"
android:textStyle="bold"
android:visibility="invisible"
tools:ignore="HardcodedText" />
</FrameLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:background="@drawable/bg_tab_selector_webstore"
android:gravity="center"
android:paddingHorizontal="18dp"
android:paddingVertical="5dp"
android:textSize="17sp"
android:textStyle="bold"
tools:text="Latest" />
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment