Prensa página de lista de la actualización desplegable
1. Los controles oficiales Uso de Google SwipeFreshLayout
Fácil de usar
用 <androidx.swiperefreshlayout.widget.SwipeRefreshLayout> </ androidx.swiperefreshlayout.widget.SwipeRefreshLayout> 包裹 RecyvlerView
El conjunto de colores
swipeRefreshLayout.setColorSchemeColors (Color.GRAY) pueden agregar una variedad de colores
Creados oyentes
swipeRefreshLayout.setOnRefreshListener { pos var: Int = esta .intent.getStringExtra ( "Posi" ) .toInt () swipeRefreshLayout.isRefreshing = false }
Raja página de lista de noticias contenía más
La idea es que un nuevo elemento en RecyclerView, se determina si el reciclador desplazarse hasta el último elemento. Leer más datos de la base de datos al final de la lista original de noticias.
Crear un diseño de clase LoadMoreView
clase LoadMoreView: RelativeLayout { constructor (contexto: Context): súper (contexto) constructor (contexto: contexto, attrs: AttributeSet): súper (contexto, attrs) Constructor (contexto: contexto, attrs: AttributeSet, defStyleAttr: Int): súper ( contexto, attrs, defStyleAttr) init { View.inflate (contexto, R.layout.view_loadmore, este ) } }
<? xml version = "1.0" encoding = "UTF-8" >? < LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android" android: layout_width = "match_parent" android: layout_height =" wrap_content" Android: gravedad = "centro" > < ProgressBar androide: layout_width = "wrap_content" android: layout_height = "wrap_content" /> </ LinearLayout >
En la lista de noticias adaptador, el retorno articleList.size + 1 piezas de datos, la última posición se establece en LoadMoreView
diversión anulación onCreateViewHolder (padre: ViewGroup, ViewType: Int): RecyclerView.ViewHolder {
si (== ViewType TYPE_NORMAL)
de retorno MyViewHolder (LayoutInflater.from (parent.context) .inflate (R.layout.newslist_item, padres, false))
otra cosa
MyViewHolder retorno (LoadMoreView (parent.context))
}
Añadir para escuchar eventos en NewsListActivity en el RecyclerView
rv_newslist.addOnScrollListener (objeto: RecyclerView.OnScrollListener () { divertido anulación onScrollStateChanged (recyclerView: RecyclerView, newState: Int) { si (== newState RecyclerView.SCROLL_STATE_IDLE) { val LayoutManager = recyclerView.layoutManager si (LayoutManager es LinearLayoutManager) { gestor de val : LinearLayoutManager = LayoutManager val lastPosition = manager.findLastVisibleItemPosition () si (lastPosition == adapter.itemCount-1 ) { //el println ( "último") // Calcular Página loadMore (POS !!,.-1 adapter.itemCount ) } } } } })
//carga más
Respuesta ? = Nula Tema { Looper. resp= Client.newCall (petición) .execute () var result = resp !!. Corporal? .string () // Toast.makeText (esto, resultado, Toast.LENGTH_SHORT) .show () var GSON = Gson () articlelist var: ArticleBeen = gson.fromJson (resultado, ArticleBeen :: clase .java) // Toast. Maketext (esto, articleList.article [7] .toString (), Toast.LENGTH_SHORT) .show () runOnUiThread { adapter.loadMore (articleList.article) } Looper.loop () } .start () }
//adapter.loadMore
diversión loadMore (articlelist: ArrayList <Artículo> ) { este .articleList.addAll (articlelist) notifyDataSetChanged () }
Noticias lista de entradas de evento de clic, y haga clic en la página de detalles de noticias
Inicio Noticias mostrar esto con una lista de noticias es la misma que la página de detalles. El registro no se repite aquí. Además, se puede añadir una barra de herramientas de página de historia de las noticias, añadir características de una participación