如何减少我的绑定SpinnerAdapter放置List对象

时间:2017-04-12 18:25:41

标签: android

我遇到了性能方面的问题,因为我无法在我的所有部分中使用通用的SpinnerAdapter来重用我的代码。

我的对象员工

public class Employee {

    private int cod;
    private String dni;
    private String carnet_ext;
    private String nombre;
    private String apellidoPaterno;
    private String apellidoMaterno;
    private Date fechaNacimiento;
    private String direccionDomicilio;
    private String telefonoDomicilio;
    private String telefonoPersonal;
    private String sexo;
    private int numeroHijos;
    private String licenciaConducir;
    private String claseLicencia;
    private String categoriaLicencia;
    private Date fechaIngreso;
    private int estado;
    private int codEmpresa;
    private Date fechaBaja;
    private String dniRegistrador;
    private int nivelEmpleado;

    private SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

    public Employee() {
    }

    public Employee(int cod, String dni, String carnet_ext, String nombre, String apellidoPaterno, String apellidoMaterno, Date fechaNacimiento, String direccionDomicilio, String telefonoDomicilio, String telefonoPersonal, String sexo, int numeroHijos, String licenciaConducir, String claseLicencia, String categoriaLicencia, Date fechaIngreso, int estado, int codEmpresa, Date fechaBaja, String dniRegistrador, int nivelEmpleado) {
        this.cod = cod;
        this.dni = dni;
        this.carnet_ext = carnet_ext;
        this.nombre = nombre;
        this.apellidoPaterno = apellidoPaterno;
        this.apellidoMaterno = apellidoMaterno;
        this.fechaNacimiento = fechaNacimiento;
        this.direccionDomicilio = direccionDomicilio;
        this.telefonoDomicilio = telefonoDomicilio;
        this.telefonoPersonal = telefonoPersonal;
        this.sexo = sexo;
        this.numeroHijos = numeroHijos;
        this.licenciaConducir = licenciaConducir;
        this.claseLicencia = claseLicencia;
        this.categoriaLicencia = categoriaLicencia;
        this.fechaIngreso = fechaIngreso;
        this.estado = estado;
        this.codEmpresa = codEmpresa;
        this.fechaBaja = fechaBaja;
        this.dniRegistrador = dniRegistrador;
        this.nivelEmpleado = nivelEmpleado;
    }

    public int getCod() {
        return cod;
    }

    public void setCod(int cod) {
        this.cod = cod;
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public String getCarnet_ext() {
        return carnet_ext;
    }

    public void setCarnet_ext(String carnet_ext) {
        this.carnet_ext = carnet_ext;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellidoPaterno() {
        return apellidoPaterno;
    }

    public void setApellidoPaterno(String apellidoPaterno) {
        this.apellidoPaterno = apellidoPaterno;
    }

    public String getApellidoMaterno() {
        return apellidoMaterno;
    }

    public void setApellidoMaterno(String apellidoMaterno) {
        this.apellidoMaterno = apellidoMaterno;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }
    public String getFechaNacimiento_String() {
        return sdf.format(fechaNacimiento);
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public String getDireccionDomicilio() {
        return direccionDomicilio;
    }

    public void setDireccionDomicilio(String direccionDomicilio) {
        this.direccionDomicilio = direccionDomicilio;
    }

    public String getTelefonoDomicilio() {
        return telefonoDomicilio;
    }

    public void setTelefonoDomicilio(String telefonoDomicilio) {
        this.telefonoDomicilio = telefonoDomicilio;
    }

    public String getTelefonoPersonal() {
        return telefonoPersonal;
    }

    public void setTelefonoPersonal(String telefonoPersonal) {
        this.telefonoPersonal = telefonoPersonal;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public int getNumeroHijos() {
        return numeroHijos;
    }

    public void setNumeroHijos(int numeroHijos) {
        this.numeroHijos = numeroHijos;
    }

    public String getLicenciaConducir() {
        return licenciaConducir;
    }

    public void setLicenciaConducir(String licenciaConducir) {
        this.licenciaConducir = licenciaConducir;
    }

    public String getClaseLicencia() {
        return claseLicencia;
    }

    public void setClaseLicencia(String claseLicencia) {
        this.claseLicencia = claseLicencia;
    }

    public String getCategoriaLicencia() {
        return categoriaLicencia;
    }

    public void setCategoriaLicencia(String categoriaLicencia) {
        this.categoriaLicencia = categoriaLicencia;
    }

    public Date getFechaIngreso() {
        return fechaIngreso;
    }
    public String getFechaIngreso_String() {
        return sdf.format(fechaIngreso);
    }
    public void setFechaIngreso(Date fechaIngreso) {
        this.fechaIngreso = fechaIngreso;
    }

    public int getEstado() {
        return estado;
    }

    public void setEstado(int estado) {
        this.estado = estado;
    }

    public int getCodEmpresa() {
        return codEmpresa;
    }

    public void setCodEmpresa(int codEmpresa) {
        this.codEmpresa = codEmpresa;
    }

    public Date getFechaBaja() {
        return fechaBaja;
    }
    public String getFechaBaja_String() {
        return sdf.format(fechaIngreso);
    }
    public void setFechaBaja(Date fechaBaja) {
        this.fechaBaja = fechaBaja;
    }

    public String getDniRegistrador() {
        return dniRegistrador;
    }

    public void setDniRegistrador(String dniRegistrador) {
        this.dniRegistrador = dniRegistrador;
    }

    public int getNivelEmpleado() {
        return nivelEmpleado;
    }

    public void setNivelEmpleado(int nivelEmpleado) {
        this.nivelEmpleado = nivelEmpleado;
    }
}

这是我在结果集上的数据库中的Loader List

private List<Employee> loadList(ResultSet rs) throws SQLException {
        List<Employee> lista_data = new ArrayList<>();
        while (rs.next()) {
            //armando la coleccion de datos para el listado
            Employee employee = new Employee();
            //asignar valores al objeto e para listar
            employee.setCod                 (rs.getInt(1));
            employee.setDni                 (rs.getString(2));
            employee.setCarnet_ext          (rs.getString(3));
            employee.setNombre              (rs.getString(4));
            employee.setApellidoPaterno     (rs.getString(5));
            employee.setApellidoMaterno     (rs.getString(6));
            employee.setFechaNacimiento     (rs.getDate(7));
            employee.setDireccionDomicilio  (rs.getString(8));
            employee.setTelefonoDomicilio   (rs.getString(9));
            employee.setTelefonoPersonal    (rs.getString(10));
            employee.setSexo                (rs.getString(11));
            employee.setNumeroHijos         (rs.getInt(12));
            employee.setLicenciaConducir    (rs.getString(13));
            employee.setClaseLicencia       (rs.getString(14));
            employee.setCategoriaLicencia   (rs.getString(15));
            employee.setFechaIngreso        (rs.getDate(16));
            employee.setEstado              (rs.getInt(17));
            employee.setCodEmpresa          (rs.getInt(18));
            employee.setFechaBaja           (rs.getDate(19));
            employee.setDniRegistrador      (rs.getString(20));
            //employee.setNivelEmpleado       (rs.getInt(21));
            lista_data.add(employee);
        }
        rs.close();
        return lista_data;
    }

我的自定义SpinnerAdapter:

public class SpinnerAdapterEmployee<C> extends ArrayAdapter<C> {

    // Your sent context
    private Context context;
    // Your custom values for the spinner (User)
    private List<C> values;

    public SpinnerAdapterEmployee(Context context, int textViewResourceId,
                                  List<C> values) {
        super(context, textViewResourceId, values);
        this.context = context;
        this.values = values;
    }

    public int getCount(){
        return values.size();
    }

    public C getItem(int position){
        return values.get(position);
    }

    public long getItemId(int position){
        return position;
    }


    // And the "magic" goes here
    // This is for the "passive" state of the spinner
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // I created a dynamic TextView here, but you can reference your own  custom layout for each spinner item
        TextView label = new TextView(context);
        label.setTextColor(Color.BLACK);
        // Then you can get the current item using the values array (Users array) and the current position
        // You can NOW reference each method you has created in your bean object (User class)
        //label.setText(values.toArray(new Employee[values.size()])[position].getNombre());
        label.setText(values.toArray(new Employee[values.size()])[position].getNombre()+" "+
                      values.toArray(new Employee[values.size()])[position].getApellidoPaterno()+" "+
                      values.toArray(new Employee[values.size()])[position].getApellidoMaterno());

        // And finally return your dynamic (or custom) view for each spinner item
        return label;
    }

    // And here is when the "chooser" is popped up
    // Normally is the same view, but you can customize it if you want
    @Override
    public View getDropDownView(int position, View convertView,
                                ViewGroup parent) {
        TextView label = new TextView(context);
        label.setTextColor(Color.BLACK);
        label.setText(values.toArray(new Employee[values.size()])[position].getNombre()+" "+
                      values.toArray(new Employee[values.size()])[position].getApellidoPaterno()+" "+
                      values.toArray(new Employee[values.size()])[position].getApellidoMaterno());

        return label;
    }
}

My Interface Fragment View and Metod for Show Data on Spinner

public class ValidationAssistenceFragment extends Fragment {


    private Spinner spinnerSelectEmployedValidationAssistance;
    private SpinnerAdapterEmployee adapter;

    public ValidationAssistenceFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_validation_assistence, container, false);

        bindUI(view);
        listEmployeeSpinner();

        return view;
    }

    private void bindUI(View view){

        spinnerSelectEmployedValidationAssistance = (Spinner) view.findViewById(R.id.spinnerSelectEmployedValidationAssistance);
    }

    private void listEmployeeSpinner(){
        try{
            EmployeeController employeeController = new EmployeeController();
            List<Employee> listEmployee = employeeController.listEmployee();

            adapter = new SpinnerAdapterEmployee(getContext(),android.R.layout.simple_spinner_item,listEmployee);
            spinnerSelectEmployedValidationAssistance.setAdapter(adapter);
            spinnerSelectEmployedValidationAssistance.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    Employee item = (Employee) parent.getItemAtPosition(position);
                    Toast.makeText(getContext(),"COD DB = "+item.getCod()+" DNI DB = "+item.getDni(),Toast.LENGTH_LONG).show();
                }
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                }
            });
        }catch(Exception e){
            Toast.makeText(getContext(),""+e.getMessage(),Toast.LENGTH_LONG).show();
        }


    }

}

所有代码都正常工作但我的代码性能很低 对此有何帮助?

0 个答案:

没有答案