Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 17/06/17, 16:37:22
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
if else

Veran, estoy parseando datos desde un json:

Código:
[{"fecha": "Enviado el 17-06-2017 a las 10:19 horas",
"nombre": "benja",
"email": "[email protected]",
"agregado": "1",
"comentario": "Camp Reial de Montroi."
},
{"fecha": "Enviado el 17-06-2017 a las 10:19 horas",
"nombre": "Ramon",
"email": "[email protected]",
"agregado": "0",
"comentario": "Puesto el de Montroi"
},
{"fecha": "Enviado el 17-06-2017 a las 09:21 horas",
"nombre": "Ramon",
"email": "[email protected]",
"agregado": "1",
"comentario": "Aqui podeis pedir los campos y comentarios ."
}
]
el cual en agregado me devuelbe 0 ó 1.
Mi intencion es que si me devuelve 0 me muestre un ImageView y si me devuelve 1 otro ImageView.

lo intento asi:

Código:
public class Comentarios_Adapter extends RecyclerView.Adapter<Comentarios_Adapter.ViewHolder> {

    private ImageLoader imageLoader;
    private Context context;


    List<Estadisticas> estadisticas;

    public Comentarios_Adapter(List<Estadisticas> estadisticas, Context context) {
        super();
        this.estadisticas = estadisticas;
        this.context = context;
    }


    @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from( parent.getContext() ).inflate( R.layout.comentarios_row, parent, false );
        ViewHolder viewHolder = new ViewHolder( v );
        return viewHolder;
    }

    public void onBindViewHolder(ViewHolder holder, final int position) {
        holder.root.setOnClickListener( new View.OnClickListener() {
            @Override
public void onClick(View view) {

                //Toast.makeText(context, "this is my Toast message!!! =)",
                //Toast.LENGTH_LONG).show();
                //Toast.makeText(context, estadisticas.get(position).getNombrePlato(), Toast.LENGTH_SHORT).show();
                /*Intent intent= new Intent(context, DetailCampos.class);
                intent.putExtra("Nombre_campo", estadisticas.get(position).getNombre_campo());
                intent.putExtra("Nombre", estadisticas.get(position).getEquipo());
                intent.putExtra("Telefono", estadisticas.get(position).getTelefono());
                intent.putExtra("Geo", estadisticas.get(position).getGeo());
                intent.putExtra("Email", estadisticas.get(position).getEmail());
                intent.putExtra("Url", estadisticas.get(position).getUrl());
                intent.putExtra("Imagen", estadisticas.get(position).getEscudo());
                context.startActivity(intent);*/
Estadisticas estadisticas1 = estadisticas.get(getAdapterPosition());
            }

            private int getAdapterPosition() {
                return 0;
            }
        } );
        Estadisticas campos = estadisticas.get( position );
        imageLoader = DecoracionLineaDivisoria.CustomVolleyRequest.getInstance(context ).getImageLoader();

        holder.textViewFecha.setText( campos.getFecha() );
        holder.textViewEquipo_Local.setText( campos.getEquipo() );

        if ( campos.getEscudo() == "1") {

            imageLoader.get(campos.getEscudo(), ImageLoader.getImageListener(holder.escudo_local, R.mipmap.ic_launcher, R.drawable.sol ) );
        }
    }


    @Override
public int getItemCount() {
        return estadisticas.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder {

        public ImageView escudo_local;
        public TextView textViewEquipo_Local,textViewFecha;
        public View root;

        public ViewHolder(View itemView) {
            super( itemView );
            root = itemView;

            escudo_local = (ImageView) itemView.findViewById( R.id.tv_esc_local );
            textViewFecha = (TextView) itemView.findViewById( R.id.tv_fecha );
            textViewEquipo_Local = (TextView) itemView.findViewById( R.id.tv_comentario );
        }
    }

    public void setFilter(List<Estadisticas> countryModels) {
        estadisticas = new ArrayList<>();
        estadisticas.addAll(countryModels);
        notifyDataSetChanged();
    }



}
Pero siempre me muestra la misma imagen que es:

Código:
<ImageView
    android:id="@+id/tv_esc_local"
    android:layout_width="match_parent"
    android:layout_height="45dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_gravity="left"
    android:layout_weight="1"
    android:padding="1dp"
    card_view:srcCompat="@drawable/tick1"/>
¿Como puedo conseguilo? Gracias

Última edición por Merche300 Día 18/06/17 a las 00:20:46.
Responder Con Cita


  #2  
Viejo 17/06/17, 18:22:09
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,202
Tu operador: -

En el código no sale eso de "agregado" por ningún lado...

Hay por ahí un campos.getEscudo() == "1" que probablemente te esté devolviendo false porque, como sabrás, Java compara referencias* no valores. Por asegurarse pon campos.getEscudo().equals("1"). Eso supuesto que sea una String, si es un int lo que sobran son las comillas del 1.

De todas formas no entiendo qué es ese campos.getEscudo() porque luego, en caso de valer "1" se lo pasas al imageLoader. ¿Para qué quiere un imageLoader un parámetro que se llama "1"?

* EDIT: Siendo rigurosos, compara valores siempre, lo que pasa es que en el caso de la String "1" el valor de la variable es una referencia que apunta a un objeto String y en el caso de un tipo primitivo como int es el propio valor.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 17/06/17 a las 18:56:00.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 18/06/17, 00:18:16
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
 Cita: Originalmente Escrito por mocelet Ver Mensaje
En el código no sale eso de "agregado" por ningún lado...

Hay por ahí un campos.getEscudo() == "1" que probablemente te esté devolviendo false porque, como sabrás, Java compara referencias* no valores. Por asegurarse pon campos.getEscudo().equals("1"). Eso supuesto que sea una String, si es un int lo que sobran son las comillas del 1.

De todas formas no entiendo qué es ese campos.getEscudo() porque luego, en caso de valer "1" se lo pasas al imageLoader. ¿Para qué quiere un imageLoader un parámetro que se llama "1"?

* EDIT: Siendo rigurosos, compara valores siempre, lo que pasa es que en el caso de la String "1" el valor de la variable es una referencia que apunta a un objeto String y en el caso de un tipo primitivo como int es el propio valor.
Por esto:

Código:
private void parseData(JSONArray array){

    for(int i = 0; i<array.length(); i++) {
        Estadisticas campo = new Estadisticas();
        JSONObject json = null;
        try {
            json = array.getJSONObject(i);


            campo.setEquipo(json.getString("comentario"));
            campo.setFecha(json.getString("fecha"));

            campo.setEscudo(json.getString("agregado"));
utilice Ecudo para la imagen cosa que ya tenia los getter y setter.
Y si campos.getEscudo().equals("1") es la solucion. Gracias
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 21:29:39 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /