custom listview hidden switch when downloading scrollview

0

Custom listview hides the Switch when downloading the scrollview of elements where getTipoIncidencia() equals "Disconnection of the Modem" or "Reconversion of the Modem"

This is my adapter class:

public class AdaptadorIncidente extends BaseAdapter implements ObtenDatosWebService.ObtenDatosWebServiceListener{


private Activity activity;
private ArrayList<Incidencias> arrayItems;
FilaIncidente view;

View vista;

public AdaptadorIncidente(Activity  activity, ArrayList<Incidencias> incidencias){
    super();
    this.activity = activity;
    this.arrayItems = new ArrayList<Incidencias>(incidencias);
}
// Retorna el número de items de la lista
@Override
public int getCount() {
    return arrayItems.size();
}
// Retorna el objeto TitularItems de la lista
@Override
public Object getItem(int position) {
    return arrayItems.get(position);
}
// Retorna la posición del item en la lista
@Override
public long getItemId(int position) {
    return position;
}


public static class FilaIncidente {

    TextView fecha,sitio,tipoIncidencia,descripcion,id;
    Switch estatus;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
     view = null;

    LayoutInflater inflator = activity.getLayoutInflater();

    if(convertView==null) {

        convertView = inflator.inflate(R.layout.incidente, parent, false);

        view = new FilaIncidente();

        view.fecha = (TextView) convertView.findViewById(R.id.tvFechaI);
        view.sitio = (TextView) convertView.findViewById(R.id.tvSitioI);
        view.tipoIncidencia = (TextView) convertView.findViewById(R.id.tvTipo);
        view.descripcion = (TextView) convertView.findViewById(R.id.tvDescI);
        view.id = (TextView) convertView.findViewById(R.id.tvId);
        view.estatus = (Switch) convertView.findViewById(R.id.swEstatusI);

        convertView.setTag(view);

    } else {
        view = (AdaptadorIncidente.FilaIncidente)convertView.getTag();
    }

    Incidencias itm = arrayItems.get(position);

    // Se asigna el dato proveniente del objeto TitularItems
    view.fecha.setText(itm.getFecha());
    view.sitio.setText(itm.getSitio());
    view.tipoIncidencia.setText(itm.getTipoIncidencia());
    view.descripcion.setText(itm.getDescripcion());

    view.id.setText(""+itm.getId());

    view.id.setVisibility(View.INVISIBLE);


    view.estatus.setTag(""+itm.getId());

    if(itm.getEstatus()==1) {
        view.estatus.setChecked(true);
        view.estatus.setText("Activo");
    }else{
        view.estatus.setChecked(false);
        view.estatus.setText("Inactivo");
    }

    vista=convertView;
    final View finalConvertView = convertView;
    final FilaIncidente finalView = view;


    if(itm.getTipoIncidencia().equalsIgnoreCase("Desconexion del Modem") || itm.getTipoIncidencia().equalsIgnoreCase("Reconexion del Modem")) {

        view.estatus.setVisibility(View.INVISIBLE);
        //   view.estatus.setEnabled(false);

    }else{
        view.estatus.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {

                view.estatus.setEnabled(false);

                int estatus = 0;

                if (b) {
                    estatus = 0;
                    finalView.estatus.setText("Activo");

                } else {
                    estatus = 1;
                    finalView.estatus.setText("Inactivo");
                }

                update(compoundButton.getTag().toString(), finalConvertView, estatus);
                // Toast.makeText(finalConvertView.getContext(),compoundButton.getTag().toString(), Toast.LENGTH_SHORT).show();
            }
        });

    }
        // Retornamos la vista
    return convertView;
}

private void update(String id,View view,int estatus) {

    String direccion = "http://localhost/Conexion.php?id="+id+"&opc=10"+"&estatus="+estatus;
    try {

        ObtenDatosWebService obtenDatos = new ObtenDatosWebService(this);
        obtenDatos.execute(direccion);

    } catch (Exception e) {
        Toast.makeText(view.getContext(),"Error al llamar al web service", Toast.LENGTH_SHORT).show();
    }

}

@Override
public void exitoObtenerDatos(String respuesta) {
    try {

        int result=0;

        JSONArray array = new JSONArray(respuesta);

        for (int i = 0; i < array.length(); i++) {
            JSONObject jsonObject = array.getJSONObject(i);
            result=jsonObject.getInt("update");
        }

      if(result==1){
            Toast.makeText(vista.getContext(),"Cambio de Estatus Exitoso", Toast.LENGTH_SHORT).show();

        }else{
            Toast.makeText(vista.getContext(),"Error al cambiar el Estatus", Toast.LENGTH_SHORT).show();
        }

        view.estatus.setEnabled(true);

    } catch (Exception e) {
        view.estatus.setEnabled(true);
        Toast.makeText(vista.getContext(),"Error al ", Toast.LENGTH_SHORT).show();
    }
}

@Override
public void fracasoObtenerDatos() {

}

}
    
asked by marcos 24.06.2017 в 05:10
source

1 answer

0

I hide it because you are indicating it:

if(itm.getTipoIncidencia().equalsIgnoreCase("Desconexion del Modem") || itm.getTipoIncidencia().equalsIgnoreCase("Reconexion del Modem")) {

    view.estatus.setVisibility(View.INVISIBLE);
    //   view.estatus.setEnabled(false);

}

Here you indicate that if getTipoIncidencia() is equal to Disconnect from the Modem or Reconnect from the Modem , make invisible the Switch

However to avoid problems when you scroll, I recommend in your adapter to overwrite the methods:

@Override
public int getItemViewType(int position) {
 return position;
}

@Override
public int getViewTypeCount() {
 return getCount();
}
    
answered by 24.06.2017 / 15:33
source