Trate de hacer una aplicación Kotlin (XII)

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

Supongo que te gusta

Origin www.cnblogs.com/vocus/p/12446597.html
Recomendado
Clasificación