{"id":397,"date":"2018-05-18T03:04:39","date_gmt":"2018-05-18T03:04:39","guid":{"rendered":"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/?page_id=397"},"modified":"2018-05-18T17:47:12","modified_gmt":"2018-05-18T17:47:12","slug":"ejemplo-listview-horizontal-con-imagenes","status":"publish","type":"page","link":"https:\/\/profeluismitre.com.mx\/Ejemplos\/?page_id=397","title":{"rendered":"Ejemplo ListView Horizontal con Im\u00e1genes"},"content":{"rendered":"<p style=\"text-align: center;\">En este Ejemplo Realizaremos una Actividad que Muestra un listado Horizontal de productos Almacenados en una Base de Datos.<\/p>\n<p style=\"text-align: left;\"><strong>Paso 1:<\/strong>\u00a0Crearemos un nuevo Proyecto Android el cual yo\u00a0 llame\u00a0<strong>EjemploListView<\/strong>\u00a0en el cual crearemos una actividad del tipo\u00a0<strong>EmptyActivity<\/strong>\u00a0que llamaremos<strong>\u00a0MainActivity<\/strong><\/p>\n<p><strong>Paso 2:<\/strong> ahora para poder crear la lista horizontal necesitaremos un objeto pero antes de eso necesitaremos agregar unas dependencias.<\/p>\n<p>En la Seccion de nuestro Proyecto llamada <strong>Gradle Script<\/strong> que se encuentra en la parte inferior, encontraremos una funci\u00f3n que se llama <strong>build.gradle(Module:app)<\/strong>\u00a0 la cual Abriremos y en la seccion donde dice <strong>dependencies<\/strong> agregaremos:<\/p>\n<pre class=\"\">compile 'com.android.support:recyclerview-v7:24.0.0'\r\ncompile 'com.android.support:cardview-v7:24.0.0'<\/pre>\n<p><span style=\"color: #ff0000;\"><strong>Nota: si en tu versi\u00f3n de android studio en vez de existir la palabra \u00abcompile\u00bb en tus dependencia existe include entonce quedar\u00eda:<\/strong><\/span><\/p>\n<pre class=\"\">include 'com.android.support:recyclerview-v7:24.0.0'\r\ninclude 'com.android.support:cardview-v7:24.0.0'<\/pre>\n<p>una vez insertadas en la parte superior aparecer\u00e1 una barra amarilla en la cual aparecer\u00e1 una opci\u00f3n que dir\u00e1 <strong>sync now <\/strong>a la cual le daremos clic<\/p>\n<p><strong>Paso 3:\u00a0 <\/strong>una vez agregadas las dependencias anteriores\u00a0En nuestra ventana xml\u00a0<strong>activity_main.xml<\/strong>\u00a0agregaremos un componente RecyclerView el cual llamaremos Lista. quedando el c\u00f3digo de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true \">&lt;ScrollView xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    xmlns:app=\"http:\/\/schemas.android.com\/apk\/res-auto\"\r\n    xmlns:tools=\"http:\/\/schemas.android.com\/tools\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"match_parent\"\r\n    tools:context=\"com.profeluismitre.ejemplolistviewhorizontal.MainActivity\"&gt;\r\n    &lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"match_parent\"\r\n        android:orientation=\"vertical\"\r\n        android:gravity=\"center|top\"&gt;\r\n    &lt;TextView\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:text=\"Primer Lista de Productos\"\r\n        android:textSize=\"25dp\"\r\n        android:layout_marginTop=\"20dp\"\/&gt;\r\n    &lt;LinearLayout\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:orientation=\"vertical\"\r\n        android:layout_marginTop=\"10dp\"&gt;\r\n        &lt;android.support.v7.widget.RecyclerView\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:orientation=\"horizontal\"\r\n            android:id=\"@+id\/listaHorizontal\"&gt;\r\n\r\n        &lt;\/android.support.v7.widget.RecyclerView&gt;\r\n    &lt;\/LinearLayout&gt;\r\n\r\n&lt;\/LinearLayout&gt;\r\n&lt;\/ScrollView&gt;<\/pre>\n<p><strong>Paso 4:<\/strong> crearemos un archivo xml que sera el cual insertaremos a la lista con la imagen e informaci\u00f3n de cada producto el archivo lo\u00a0 llamaremos\u00a0<strong>elementos_lista.xml<\/strong>, en el cual implementaremos un Layout llamada <strong>CardView<\/strong> el cual semejara una carta, para crearlo daremos Clic derecho sobre la carpeta layout\u00a0<strong>NEW&gt;XML&gt;LAYOUT XML\u00a0<\/strong>el codigo quedario de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;android.support.v7.widget.CardView xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    android:layout_width=\"wrap_content\"\r\n    android:layout_height=\"wrap_content\"\r\n    android:orientation=\"vertical\"\r\n    android:background=\"@android:color\/holo_green_light\"&gt;\r\n    &lt;LinearLayout\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:orientation=\"vertical\"&gt;\r\n\r\n        &lt;ImageView\r\n            android:id=\"@+id\/imgProductoH\"\r\n            android:layout_width=\"100dp\"\r\n            android:layout_height=\"100dp\"\r\n            android:layout_gravity=\"center\"\/&gt;\r\n        &lt;TextView\r\n            android:id=\"@+id\/CodigoProductoH\"\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:background=\"@android:color\/transparent\"\r\n            android:text=\"menu\"\r\n            android:layout_gravity=\"center\"\r\n            android:textColor=\"@android:color\/black\"\r\n            android:textSize=\"15dp\" \/&gt;\r\n    &lt;\/LinearLayout&gt;\r\n&lt;\/android.support.v7.widget.CardView&gt;<\/pre>\n<p><strong>Paso 5:<\/strong>\u00a0Ahora creamos nuestra clase de<strong>\u00a0MiBaseDatos\u00a0<\/strong>que sera la encargada de crear la base de datos y por consiguiente almacenar la informaci\u00f3n.<\/p>\n<pre class=\"lang:default decode:true \">public class MiBaseDatos extends SQLiteOpenHelper {\r\n    private static final String TABLA_PRODUCTO =\r\n            \"CREATE TABLE productos (codigo TEXT PRIMARY KEY, descripcion TEXT, precio TEXT, cantidad TEXT, imagen INTEGER)\";\r\n    private static final String SQL_DELETE_PRODUCTOS =\r\n            \"DROP TABLE IF EXISTS productos\";\r\n    public static final String NOMBRE_BD = \"EjemploListView.sqlite\";\r\n    public MiBaseDatos(Context contexto){\r\n        super(contexto, NOMBRE_BD, null, 1);\r\n\r\n    }\r\n\r\n    @Override\r\n    public void onCreate(SQLiteDatabase db) {\r\n        db.execSQL(TABLA_PRODUCTO);\r\n    }\r\n\r\n    @Override\r\n    public void onUpgrade(SQLiteDatabase db, int i, int i1) {\r\n        db.execSQL(SQL_DELETE_PRODUCTOS);\r\n        onCreate(db);\r\n    }\r\n}<\/pre>\n<p><strong>Paso 6:<\/strong>\u00a0Crearemos nuestra clase que almacenara la informaci\u00f3n del producto para poder armar el listado la cual llamaremos\u00a0<strong>Productos<\/strong>:<\/p>\n<pre class=\"lang:default decode:true \">public class Productos {\r\n    private String codigo;\r\n    private String descripcion;\r\n    private String precio;\r\n    private String cantidad;\r\n    private int imagen;\r\n\r\n    public Productos(){}\r\n\r\n    public Productos(String codigo, String descripcion, String precio, String cantidad, int imagen) {\r\n        this.codigo = codigo;\r\n        this.descripcion = descripcion;\r\n        this.precio = precio;\r\n        this.cantidad = cantidad;\r\n        this.imagen = imagen;\r\n    }\r\n\r\n    public String getCodigo() {\r\n        return codigo;\r\n    }\r\n\r\n    public void setCodigo(String codigo) {\r\n        this.codigo = codigo;\r\n    }\r\n\r\n    public String getDescripcion() {\r\n        return descripcion;\r\n    }\r\n\r\n    public void setDescripcion(String descripcion) {\r\n        this.descripcion = descripcion;\r\n    }\r\n\r\n    public String getPrecio() {\r\n        return precio;\r\n    }\r\n\r\n    public void setPrecio(String precio) {\r\n        this.precio = precio;\r\n    }\r\n\r\n    public String getCantidad() {\r\n        return cantidad;\r\n    }\r\n\r\n    public void setCantidad(String cantidad) {\r\n        this.cantidad = cantidad;\r\n    }\r\n\r\n    public int getImagen() {\r\n        return imagen;\r\n    }\r\n\r\n    public void setImagen(int imagen) {\r\n        this.imagen = imagen;\r\n    }\r\n}<\/pre>\n<p><strong>Paso 7:\u00a0\u00a0<\/strong>Ahora dentro de la Actividad MainActivity creamos los siguiente objetos:<\/p>\n<pre class=\"\">MiBaseDatos baseDatos;\r\nArrayList&lt;Productos&gt;listaProductos=new ArrayList&lt;Productos&gt;();\r\nRecyclerView Lista1;<\/pre>\n<p>los cuales necesitaremos para mostrar los productos.<\/p>\n<p><strong>Paso 8:<\/strong>\u00a0Inicializamos el objeto Lista1 dentro del m\u00e9todo onCreate y posteriormente mandaremos llamar a dos m\u00e9todos que vamos a crear que son <strong>grabarBaseDatos()<\/strong> para almacenar productos en caso de que no tengamos, y el metodo <strong>cargarDatos()<\/strong> que sera el encargado de leer la base de datos y meterlos en el ArrayList.<\/p>\n<pre class=\"\">Lista1 = (RecyclerView) findViewById(R.id.listaHorizontal);\r\ngrabarBaseDatos();\r\ncargarDatos();\r\nLista1.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.HORIZONTAL,false));\r\nLista1.setAdapter(new HorizontalAdapter(listaProductos));<\/pre>\n<p>Paso 9: Ahora creamos los m\u00e9todos antes mencionados.<\/p>\n<p>M\u00e9todo <strong>grabarBaseDatos()<\/strong><\/p>\n<pre class=\"lang:default decode:true \">public void grabarBaseDatos(){\r\n        int imagenes[]={R.drawable.cereal1,R.drawable.cereal2,R.drawable.cereal3,\r\n                R.drawable.fruta1,R.drawable.fruta2,R.drawable.fruta3,R.drawable.refresco1,\r\n                R.drawable.refresco2,R.drawable.refresco3};\r\n        String descripcion[]={\"ChocoCrispy\",\"Frostie\",\"Froot Loop\",\"Naranja\",\"Fruta Estrella\",\"Platano\",\"Coca-cola\",\"Mundet\",\"Coca-Light\"};\r\n        String precio[]={\"10.5\",\"25\",\"20\",\"12.99\",\"25.4\",\"12.3\",\"24\",\"23.5\",\"19.5\"};\r\n        String cantidad[]={\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\"};\r\n        String codigo[]={\"123\",\"456\",\"789\",\"987\",\"654\",\"321\",\"759\",\"258\",\"369\"};\r\n        baseDatos=new MiBaseDatos(getApplicationContext());\r\n        SQLiteDatabase sql=baseDatos.getWritableDatabase();\r\n\r\n        for (int x=0;x&lt;imagenes.length;x++){\r\n            ContentValues valores=new ContentValues();\r\n            valores.put(\"codigo\",codigo[x]);\r\n            valores.put(\"descripcion\",descripcion[x]);\r\n            valores.put(\"precio\",precio[x]);\r\n            valores.put(\"cantidad\",cantidad[x]);\r\n            valores.put(\"imagen\",imagenes[x]);\r\n            sql.insertWithOnConflict(\"productos\",null,valores,SQLiteDatabase.CONFLICT_IGNORE);\r\n        }\r\n        sql.close();\r\n    }<\/pre>\n<p>M\u00e9todo <strong>cargarDatos()<\/strong><\/p>\n<pre class=\"lang:default decode:true \">public void cargarDatos(){\r\n        baseDatos=new MiBaseDatos(getApplicationContext());\r\n        SQLiteDatabase sql=baseDatos.getReadableDatabase();\r\n        String[] columnas={\"codigo\",\"descripcion\",\"precio\",\"cantidad\",\"imagen\"};\r\n        Cursor cursor=sql.query(\"productos\",columnas,null,null,null,null,null);\r\n        Log.d(\"CAntidad de Productos\",String.valueOf(cursor.getColumnCount()));\r\n        while(cursor.moveToNext()){\r\n            listaProductos.add(new Productos(\r\n                    cursor.getString(cursor.getColumnIndex(\"codigo\")),\r\n                    cursor.getString(cursor.getColumnIndex(\"descripcion\")),\r\n                    cursor.getString(cursor.getColumnIndex(\"precio\")),\r\n                    cursor.getString(cursor.getColumnIndex(\"cantidad\")),\r\n                    cursor.getInt(cursor.getColumnIndex(\"imagen\"))\r\n            ));\r\n        }\r\n        sql.close();\r\n    }<\/pre>\n<p><strong>Paso 10:<\/strong> ahora para que se pueda mostrar la lista crearemos el adaptador en nuestra actividad:<\/p>\n<pre class=\"lang:default decode:true \">public class HorizontalAdapter extends RecyclerView.Adapter&lt;HorizontalAdapter.HorizontalViewHolder&gt; {\r\n\r\n\r\n        private ArrayList&lt;Productos&gt; productos;\r\n\r\n        public HorizontalAdapter(ArrayList&lt;Productos&gt; productos) {\r\n                 this.productos=productos;\r\n        }\r\n\r\n        @Override\r\n        public HorizontalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {\r\n            LayoutInflater inflater = LayoutInflater.from(parent.getContext());\r\n            View view = inflater.inflate(R.layout.elementos_lista, parent, false);\r\n            return new HorizontalViewHolder(view);\r\n        }\r\n\r\n        @Override\r\n        public void onBindViewHolder(final HorizontalViewHolder holder, final int position) {\r\n\r\n            holder.imagen.setImageResource(productos.get(position).getImagen());\r\n            holder.codigo.setText(productos.get(position).getCodigo());\r\n            holder.imagen.setOnClickListener(new View.OnClickListener() {\r\n                @Override\r\n                public void onClick(View view) {\r\n\r\n                    \/\/ custom dialog\r\n                    final Dialog dialog = new Dialog(MainActivity.this);\r\n                    dialog.setContentView(R.layout.mostrar_producto);\r\n                    dialog.setTitle(\"Detalles de Producto.\");\r\n\r\n                    \/\/ set the custom dialog components - text, image and button\r\n                    TextView txtCodigo = (TextView) dialog.findViewById(R.id.txtCodigoM);\r\n                    txtCodigo.setText(productos.get(position).getCodigo());\r\n                    TextView txtDescripcion = (TextView) dialog.findViewById(R.id.txtDescripcionM);\r\n                    txtDescripcion.setText(productos.get(position).getDescripcion());\r\n                    TextView txtPrecio = (TextView) dialog.findViewById(R.id.txtPrecioM);\r\n                    txtPrecio.setText(\"$\"+productos.get(position).getPrecio());\r\n                    TextView txtCantidad = (TextView) dialog.findViewById(R.id.txtCantidadM);\r\n                    txtCantidad.setText(productos.get(position).getCantidad());\r\n                    ImageView image = (ImageView) dialog.findViewById(R.id.imgProdM);\r\n                    image.setImageResource(productos.get(position).getImagen());\r\n\r\n                    Button dialogButton = (Button) dialog.findViewById(R.id.btnAceptarM);\r\n                    \/\/ if button is clicked, close the custom dialog\r\n                    dialogButton.setOnClickListener(new View.OnClickListener() {\r\n\r\n                        public void onClick(View v) {\r\n                            dialog.dismiss();\r\n                        }\r\n                    });\r\n\r\n                    dialog.show();\r\n\r\n\r\n                }\r\n            });\r\n        }\r\n\r\n        @Override\r\n        public int getItemCount() {\r\n            return productos.size();\r\n        }\r\n\r\n\r\n        public class HorizontalViewHolder extends RecyclerView.ViewHolder {\r\n            ImageView imagen;\r\n            TextView codigo;\r\n            TextView descripcion;\r\n            TextView precio;\r\n            TextView cantidad;\r\n\r\n            public HorizontalViewHolder(View itemView) {\r\n                super(itemView);\r\n                imagen = itemView.findViewById(R.id.imgProductoH);\r\n                codigo=itemView.findViewById(R.id.CodigoProductoH);\r\n\r\n\r\n            }\r\n\r\n        }\r\n    }<\/pre>\n<p><b>el c\u00f3digo total de la actividad quedar\u00eda\u00a0de la siguiente manera:\u00a0<\/b><\/p>\n<pre class=\"lang:default decode:true\">import android.app.Dialog;\r\nimport android.content.ContentValues;\r\nimport android.content.DialogInterface;\r\nimport android.database.Cursor;\r\nimport android.database.sqlite.SQLiteDatabase;\r\nimport android.support.v7.app.AlertDialog;\r\nimport android.support.v7.app.AppCompatActivity;\r\nimport android.os.Bundle;\r\nimport android.support.v7.widget.LinearLayoutManager;\r\nimport android.support.v7.widget.RecyclerView;\r\nimport android.util.Log;\r\nimport android.view.LayoutInflater;\r\nimport android.view.View;\r\nimport android.view.ViewGroup;\r\nimport android.widget.Button;\r\nimport android.widget.ImageView;\r\nimport android.widget.TextView;\r\nimport android.widget.Toast;\r\n\r\nimport java.util.ArrayList;\r\n\r\npublic class MainActivity extends AppCompatActivity {\r\n    MiBaseDatos baseDatos;\r\n    ArrayList&lt;Productos&gt;listaProductos=new ArrayList&lt;Productos&gt;();\r\n    RecyclerView Lista1;\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_main);\r\n        Lista1 = (RecyclerView) findViewById(R.id.listaHorizontal);\r\n        grabarBaseDatos();\r\n        cargarDatos();\r\n        Lista1.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.HORIZONTAL,false));\r\n        Lista1.setAdapter(new HorizontalAdapter(listaProductos));\r\n    }\r\n    public void grabarBaseDatos(){\r\n        int imagenes[]={R.drawable.cereal1,R.drawable.cereal2,R.drawable.cereal3,\r\n                R.drawable.fruta1,R.drawable.fruta2,R.drawable.fruta3,R.drawable.refresco1,\r\n                R.drawable.refresco2,R.drawable.refresco3};\r\n        String descripcion[]={\"ChocoCrispy\",\"Frostie\",\"Froot Loop\",\"Naranja\",\"Fruta Estrella\",\"Platano\",\"Coca-cola\",\"Mundet\",\"Coca-Light\"};\r\n        String precio[]={\"10.5\",\"25\",\"20\",\"12.99\",\"25.4\",\"12.3\",\"24\",\"23.5\",\"19.5\"};\r\n        String cantidad[]={\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\"};\r\n        String codigo[]={\"123\",\"456\",\"789\",\"987\",\"654\",\"321\",\"759\",\"258\",\"369\"};\r\n        baseDatos=new MiBaseDatos(getApplicationContext());\r\n        SQLiteDatabase sql=baseDatos.getWritableDatabase();\r\n\r\n        for (int x=0;x&lt;imagenes.length;x++){\r\n            ContentValues valores=new ContentValues();\r\n            valores.put(\"codigo\",codigo[x]);\r\n            valores.put(\"descripcion\",descripcion[x]);\r\n            valores.put(\"precio\",precio[x]);\r\n            valores.put(\"cantidad\",cantidad[x]);\r\n            valores.put(\"imagen\",imagenes[x]);\r\n            sql.insertWithOnConflict(\"productos\",null,valores,SQLiteDatabase.CONFLICT_IGNORE);\r\n        }\r\n        sql.close();\r\n    }\r\n\r\n    public void cargarDatos(){\r\n        baseDatos=new MiBaseDatos(getApplicationContext());\r\n        SQLiteDatabase sql=baseDatos.getReadableDatabase();\r\n        String[] columnas={\"codigo\",\"descripcion\",\"precio\",\"cantidad\",\"imagen\"};\r\n        Cursor cursor=sql.query(\"productos\",columnas,null,null,null,null,null);\r\n        Log.d(\"CAntidad de Productos\",String.valueOf(cursor.getColumnCount()));\r\n        while(cursor.moveToNext()){\r\n            listaProductos.add(new Productos(\r\n                    cursor.getString(cursor.getColumnIndex(\"codigo\")),\r\n                    cursor.getString(cursor.getColumnIndex(\"descripcion\")),\r\n                    cursor.getString(cursor.getColumnIndex(\"precio\")),\r\n                    cursor.getString(cursor.getColumnIndex(\"cantidad\")),\r\n                    cursor.getInt(cursor.getColumnIndex(\"imagen\"))\r\n            ));\r\n        }\r\n        sql.close();\r\n    }\r\n    public class HorizontalAdapter extends RecyclerView.Adapter&lt;HorizontalAdapter.HorizontalViewHolder&gt; {\r\n\r\n\r\n        private ArrayList&lt;Productos&gt; productos;\r\n\r\n        public HorizontalAdapter(ArrayList&lt;Productos&gt; productos) {\r\n                 this.productos=productos;\r\n        }\r\n\r\n        @Override\r\n        public HorizontalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {\r\n            LayoutInflater inflater = LayoutInflater.from(parent.getContext());\r\n            View view = inflater.inflate(R.layout.elementos_lista, parent, false);\r\n            return new HorizontalViewHolder(view);\r\n        }\r\n\r\n        @Override\r\n        public void onBindViewHolder(final HorizontalViewHolder holder, final int position) {\r\n\r\n            holder.imagen.setImageResource(productos.get(position).getImagen());\r\n            holder.codigo.setText(productos.get(position).getCodigo());\r\n            holder.imagen.setOnClickListener(new View.OnClickListener() {\r\n                @Override\r\n                public void onClick(View view) {\r\n\r\n                    \/\/ custom dialog\r\n                    final Dialog dialog = new Dialog(MainActivity.this);\r\n                    dialog.setContentView(R.layout.mostrar_producto);\r\n                    dialog.setTitle(\"Detalles de Producto.\");\r\n\r\n                    \/\/ set the custom dialog components - text, image and button\r\n                    TextView txtCodigo = (TextView) dialog.findViewById(R.id.txtCodigoM);\r\n                    txtCodigo.setText(productos.get(position).getCodigo());\r\n                    TextView txtDescripcion = (TextView) dialog.findViewById(R.id.txtDescripcionM);\r\n                    txtDescripcion.setText(productos.get(position).getDescripcion());\r\n                    TextView txtPrecio = (TextView) dialog.findViewById(R.id.txtPrecioM);\r\n                    txtPrecio.setText(\"$\"+productos.get(position).getPrecio());\r\n                    TextView txtCantidad = (TextView) dialog.findViewById(R.id.txtCantidadM);\r\n                    txtCantidad.setText(productos.get(position).getCantidad());\r\n                    ImageView image = (ImageView) dialog.findViewById(R.id.imgProdM);\r\n                    image.setImageResource(productos.get(position).getImagen());\r\n\r\n                    Button dialogButton = (Button) dialog.findViewById(R.id.btnAceptarM);\r\n                    \/\/ if button is clicked, close the custom dialog\r\n                    dialogButton.setOnClickListener(new View.OnClickListener() {\r\n\r\n                        public void onClick(View v) {\r\n                            dialog.dismiss();\r\n                        }\r\n                    });\r\n\r\n                    dialog.show();\r\n\r\n\r\n                }\r\n            });\r\n        }\r\n\r\n        @Override\r\n        public int getItemCount() {\r\n            return productos.size();\r\n        }\r\n\r\n\r\n        public class HorizontalViewHolder extends RecyclerView.ViewHolder {\r\n            ImageView imagen;\r\n            TextView codigo;\r\n            TextView descripcion;\r\n            TextView precio;\r\n            TextView cantidad;\r\n\r\n            public HorizontalViewHolder(View itemView) {\r\n                super(itemView);\r\n                imagen = itemView.findViewById(R.id.imgProductoH);\r\n                codigo=itemView.findViewById(R.id.CodigoProductoH);\r\n\r\n\r\n            }\r\n\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><b><\/b>Bueno esto seria todo, si hiciste todo de manera correcta tendr\u00edas que ver una aplicaci\u00f3n parecida a lo siguiente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-401 alignleft\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/05\/lista2-177x300.png\" alt=\"\" width=\"177\" height=\"300\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/05\/lista2-177x300.png 177w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/05\/lista2.png 391w\" sizes=\"auto, (max-width: 177px) 100vw, 177px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-402 alignleft\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/05\/lista3-177x300.png\" alt=\"\" width=\"177\" height=\"300\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/05\/lista3-177x300.png 177w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/05\/lista3.png 391w\" sizes=\"auto, (max-width: 177px) 100vw, 177px\" \/><\/p>\n<p>&nbsp;<\/p>\n<div id=\"crayon-5afe3c1192c64316616195\" class=\"crayon-syntax crayon-theme-eclipse crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-main\"><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>En este Ejemplo Realizaremos una Actividad que Muestra un listado Horizontal de productos Almacenados en una Base de Datos. Paso 1:\u00a0Crearemos un nuevo Proyecto Android el cual yo\u00a0 llame\u00a0EjemploListView\u00a0en el cual crearemos una actividad del tipo\u00a0EmptyActivity\u00a0que llamaremos\u00a0MainActivity Paso 2: ahora para poder crear la lista horizontal necesitaremos un objeto pero antes de eso necesitaremos agregar [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-397","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages\/397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=397"}],"version-history":[{"count":3,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages\/397\/revisions"}],"predecessor-version":[{"id":403,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages\/397\/revisions\/403"}],"wp:attachment":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}