Tratar de hacer con una aplicación Kotlin (XVIII)

Comentarios pulgar hacia arriba la función

tabla de la base comentario

 

En esta tabla se puede especificar un nombre de usuario en postid, en el tiempo pubdate, aite (@xxx) comentó

Pulgares tabla de base de datos es similar

 

 Puede ser descrito, en el tiempo nombre de usuario pubdate, en postid de, la commentid pulgares

Entonces es hacer interfaces de red tal solicitud

Permítanme pulgar hacia arriba función, se encontró con un problema:

 

 Lista de presentación pulgares es un LinearLayout, entró dinámicamente añadir ImageView, pero cuando se utiliza addView añadió, ImageView aparentemente convertirse en el ancho predeterminado match_parent, sólo puede mostrar la última imageview añadido

diseño LinearLayout

 < RelativeLayout
             androide: layout_width = "match_parent" 
            android: layout_height = "40dp" 
            android: paddingTop "20dp" = > 
            < LinearLayout
                 androide: Fondo = "@ estirable / borders1" 
                androide: id = "@ + / Identificación del liked_container" 
                android: layout_width = "wrap_content" 
                android: layout_height "wrap_content" = 
                androide: orientación = "horizontal" 
                android: layout_alignParentStart = "true" >

Agregar dinámicamente imageView, estoy aquí específicamente para imageView añade un color de fondo

para (i en 0 hasta likedList !! .size) { 
                var imageView = NiceImageView ( este ) 
                var avatarImgUrl = baseUrl + likedList [i] .avatar 
                Picasso.get (). carga (avatarImgUrl) .into (imageView) 
                var LinearLayout = findViewById < LinearLayout> (R.id.liked_container) 
                imageView.setBackgroundColor (Color.RED) 
                linearLayout.addView (imageView) 
            }

Una solución sencilla es dirigir cinco imegeview define en el archivo de diseño, y luego dinámicamente ajusta su imageResource como

Pero creo que se puede tratar de ajustar dinámicamente el ancho y la altura de unos imageView

Probé este conjunto

imageView.adjustViewBounds = verdadero 
                var LayoutParams = imageView.layoutParams 
                layoutParams.width = 20 
                layoutParams.height = 20 

                imageView.layoutParams = LayoutParams

报错: java.lang.NullPointerException: intento de escribir en el campo 'int android.view.ViewGroup $ LayoutParams.width' en una referencia de objeto nulo

Parece que este es el motivo por el que ImageView crea de forma dinámica, ViewGroup está vacía

Antes de que si hay una manera de establecer los controles de anchura y altura

addView puede aceptar dos parámetros

linearLayout.addView (imageView, params)

segundo parámetro de control puede ser ancho establecido y la altura, los márgenes y similares

params = RelativeLayout.LayoutParams (ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)

var width = ScreenDimen.getInstance ( este ) .pdToPix (30 ) 
                de altura var = ScreenDimen.getInstance ( este ) .pdToPix (30 ) 
                var rightMargin = ScreenDimen.getInstance ( este ) .pdToPix (30 )
                 var params = RelativeLayout.LayoutParams (ancho , altura) 
                params.rightMargin = rightMargin
                 linearLayout.addView (imageView, i, params)

Eso es todo

 

 

Sin embargo, hay un problema de este tipo, cómo configurar dos imageView de leftMargin o rightMargin?

params.rightMargin = rightMargin

Esto no es válida

No sé por qué no válido. ! embarazosa ! Sin embargo, creo que la forma individual, se dedicó a su acolchado de buena

imageView.setPadding (relleno, 0, relleno, 0)

 

 (Donde relleno se establece en aproximadamente x, que el ancho de alta constante imageView debe ser + x * 4)

 

Este código se encapsula entonces en una función

diversión updateLikedList () { 

        val recuento = LoadWebData (). getLikedCount (postID, nula ) 
        liked_count.text = "楼主收到$ {count}个赞"
         si (cuenta == 0 ) { 
            liked_container.visibility = View.GONE 
        } demás { 
            liked_container.visibility = View.VISIBLE 
            val likedList = LoadWebData () loadLikedList (1,5, postID,. nula ); 
            val recuento = LoadWebData (). getLikedCount (postID, nula ) 
            liked_count.text = "楼主收到$ {count}个赞"
            liked_container.removeAllViews () 
            para (i en 0 hasta likedList !! .size) { 
                var imageView = NiceImageView ( este ) 

                var avatarImgUrl = baseUrl + likedList [i] .avatar 

                Picasso.get (). carga (avatarImgUrl) .into (imageView) 
                var LinearLayout = findViewById <LinearLayout> (R.id.liked_container) 

                // var params = RelativeLayout.LayoutParams (ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) 
                var width = ScreenDimen.getInstance ( este ) .pdToPix (42 ) 
                var altura= ScreenDimen.getInstance ( este ) .pdToPix (30 ) 
                de relleno var = ScreenDimen.getInstance ( este ) .pdToPix (3 ) 
                var params = RelativeLayout.LayoutParams (anchura, altura) 
                imageView.setPadding (relleno, 0, relleno, 0 ) 
                LinearLayout .addView (IMAGEVIEW, i, params) 
            } 

        } 
    }

En el punto de alabanza y alabanza punto de cancelación cuando estamos a punto de llamar a esta función se puede lograr de forma dinámica la lista actualizada de los pulgares para arriba

También hay un problema, haga clic en la página de detalles de la publicación, se debe primero determinar si los pulgares del usuario actual hasta este post, si usted tiene los pulgares, a continuación, que deben ser marcadas con un botón rojo, haga clic en el pulgar hacia arriba se cancela de nuevo. De todos modos, es mantener una variable booleana le gusta, y si el punto al igual que, a continuación, le gusta initialize = bastante cierto.

==

Para este Foro No quiero enredar. primero vamos a hacer esta mirada como si, después de un momento perfecto para venir. A continuación, voy a tener que tratar de hacer un centro comercial, y aprender arquitectura, por ejemplo, MVC, MVP y similares, así como la seguridad de red lado de las cosas. Y así los que están preparados, creo que voy a la entrada él!

 

Supongo que te gusta

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