/** * Invoked by the AutoCompleteTextView field to get completions for the current input. * * <p>NOTE: If this method either throws an exception or returns null, the Filter class that * invokes it will log an error with the traceback, but otherwise ignore the problem. No choice * list will be displayed. Watch those error logs! * * @param constraint The input entered thus far. The resulting query will search for Items whose * description begins with this string. * @return A Cursor that is positioned to the first row (if one exists) and managed by the * activity. */ @Override public Cursor runQueryOnBackgroundThread(CharSequence constraint) { Cursor currentCursor = null; if (getFilterQueryProvider() != null) { return getFilterQueryProvider().runQuery(constraint); } String args = ""; if (constraint != null) { args = constraint.toString(); } EmpresaSqliteDao empresaDao = new EmpresaSqliteDao(); currentCursor = empresaDao.listarNombresEmpresas(contexto, args); return currentCursor; }
/** * Se implementa este metodo para actualizar el valor del id de la empresa del campo oculto cuando * la persona no selecciona ninguna opcion de la lista sino que escribe completamente el contenido * del campo autocomplete. */ @Override public void afterTextChanged(Editable s) { String nombreEmpresa = acNombreEmpresa.getText().toString(); EmpresaSqliteDao empresaDao = new EmpresaSqliteDao(); Cursor cursor = empresaDao.buscarEmpresaPorNombre(contexto, nombreEmpresa); if (cursor.getCount() != 0) { // Obtenemos el id de la empresa String idEmpresa = cursor.getString(0); // Update the parent class's TextView etIdEmpresa.setText(idEmpresa); } else { etIdEmpresa.setText(""); } }
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.activity_clientes, container, false); permisos = SesionUsuario.getPermisos(getActivity()); if (savedInstanceState == null) { // Nos aseguramos que no importa desde donde nos llamen, el indicador del // tab es el correspondiente. AplicacionActivity.mTabsWidget.setCurrentTab(AplicacionActivity.posicionTagFragmentClientes); EmpresaSqliteDao empresaDao = new EmpresaSqliteDao(); EmpleadoSqliteDao empleadoDao = new EmpleadoSqliteDao(); Cursor mCursorEmpresas = empresaDao.buscarEmpresaFilter(getActivity(), null); Cursor mCursorEmpleados = empleadoDao.buscarEmpleadoFilter(getActivity(), null); // primero listamos a los empleados donde vamos a inicializar el valor de // listCursorAdapterEmpleados listarEmpleados(view, mCursorEmpleados); // por ultimo listamos a las empresas, la cual utiliza la referencia de // listCursorAdapterEmpleados dentro // del adaptador. OJO con esto. listarEmpresas(view, mCursorEmpresas); setArrSincronizados(mCursorEmpresas, "empresa"); setArrSincronizados(mCursorEmpleados, "empleado"); cambiarColorCuadroNotificacion(view); // Registro del evento OnClick del buttonActualizar Button bAct = (Button) view.findViewById(R.id.buttonActualizar); bAct.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { AplicacionActivity.dialog = new ProgressDialog(getActivity()); AplicacionActivity.onClickSincronizar(); new SincronizacionAsyncTask(getActivity()) .execute( DataBaseHelper.TABLA_ROL, DataBaseHelper.TABLA_USUARIO, DataBaseHelper.TABLA_PERMISO, DataBaseHelper.TABLA_ROL_PERMISO, DataBaseHelper.TABLA_USUARIO_ROL, DataBaseHelper.TABLA_EMPRESA, DataBaseHelper.TABLA_EMPLEADO, DataBaseHelper.TABLA_COTIZACION, DataBaseHelper.TABLA_EMPLEADO_COTIZACION, DataBaseHelper.TABLA_SERVICIO, DataBaseHelper.TABLA_COTIZACION_SERVICIO, DataBaseHelper.TABLA_TAREA, DataBaseHelper.TABLA_CHECKIN, DataBaseHelper.TABLA_HISTORICO); } }); // Registro del evento OnClick del buttonEmpresa Button bEmp = (Button) view.findViewById(R.id.buttonEmpresa); bEmp.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { DatosEmpresaActivity fragmentDatosEmpresa = new DatosEmpresaActivity(); final FragmentTransaction ft = getFragmentManager().beginTransaction(); // Cambiamos el layout de clientes por datos_empresa e indicamos el tag del frame. ft.replace( android.R.id.tabcontent, fragmentDatosEmpresa, AplicacionActivity.tagFragmentDatosEmpresa); // preservamos el estado anterior al hacer click en back button ft.addToBackStack(AplicacionActivity.tagFragmentDatosEmpresa); ft.commit(); } }); // Registro del evento OnClick del buttonCliente Button bClient = (Button) view.findViewById(R.id.buttonCliente); bClient.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { DatosClienteActivity fragmentDatosClientes = new DatosClienteActivity(); final FragmentTransaction ft = getFragmentManager().beginTransaction(); // Cambiamos el layout de clientes por datos_cliente e indicamos el tag del frame. ft.replace( android.R.id.tabcontent, fragmentDatosClientes, AplicacionActivity.tagFragmentDatosCliente); // preservamos el estado anterior al hacer click en back button ft.addToBackStack(AplicacionActivity.tagFragmentDatosCliente); ft.commit(); } }); // Registro del evento addTextChangedListener cuando utilizamos el buscador EditText etBuscar = (EditText) view.findViewById(R.id.editTextBuscar); etBuscar.addTextChangedListener( new TextWatcher() { @Override public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { // Este if es para que este metodo no se llame automaticamente // al iniciar la actividad if (mOnTextChangedBool) { if (listCursorAdapterEmpleados != null) { listCursorAdapterEmpleados.getFilter().filter(cs); } if (listCursorAdapterEmpresas != null) { listCursorAdapterEmpresas.getFilter().filter(cs); } } else { mOnTextChangedBool = true; } } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {} @Override public void afterTextChanged(Editable arg0) {} }); } return view; }
/** * Funcion que elimina de la BD y del list view empleados o empresas. * * @param id Id del empleado o empresa * @param tipoCliente Posibles valores: empresa o empleado */ private void borrarCliente(String id, String tipoCliente) { final LayoutInflater inflater = LayoutInflater.from(getActivity()); Boolean eliminado = false; Mensaje mToast = null; String mensajeError = null; String mensajeOk = null; if (tipoCliente.equals("empresa")) { EmpresaSqliteDao empresaDao = new EmpresaSqliteDao(); eliminado = empresaDao.eliminarEmpresa(getActivity(), id); mensajeOk = "ok_eliminado_empresa"; mensajeError = "error_eliminado_empresa"; } else if (tipoCliente.equals("empleado")) { EmpleadoSqliteDao empleadoDao = new EmpleadoSqliteDao(); eliminado = empleadoDao.eliminarEmpleado(getActivity(), id); mensajeOk = "ok_eliminado_empleado"; mensajeError = "error_eliminado_empleado"; } else { Log.e( "ListaClientesCursorAdapter", "tipoCliente no soportado en funcion borrarCliente: " + tipoCliente); } if (eliminado) { mToast = new Mensaje(inflater, (AplicacionActivity) getActivity(), mensajeOk); if (tipoCliente.equals("empresa")) { // Actualizamos los valores del cursor de la lista de empresas EmpresaSqliteDao empresaDao = new EmpresaSqliteDao(); listCursorAdapterEmpresas.changeCursor(empresaDao.buscarEmpresaFilter(getActivity(), null)); // Notificamos que la lista cambio listCursorAdapterEmpresas.notifyDataSetChanged(); // Cuando eliminamos a una empresa, eliminamos tambien a sus empleados // Actualizamos los valores del cursor de la lista de empleados if (listCursorAdapterEmpleados != null) { EmpleadoSqliteDao empleadoDao = new EmpleadoSqliteDao(); listCursorAdapterEmpleados.changeCursor( empleadoDao.buscarEmpleadoFilter(getActivity(), null)); // Notificamos que la lista cambio listCursorAdapterEmpleados.notifyDataSetChanged(); } } else if (tipoCliente.equals("empleado")) { // Actualizamos los valores del cursor de la lista de empleados EmpleadoSqliteDao empleadoDao = new EmpleadoSqliteDao(); listCursorAdapterEmpleados.changeCursor( empleadoDao.buscarEmpleadoFilter(getActivity(), null)); // Notificamos que la lista cambio listCursorAdapterEmpleados.notifyDataSetChanged(); } } else { mToast = new Mensaje(inflater, getActivity(), mensajeError); } try { mToast.controlMensajesToast(); } catch (Exception e) { e.printStackTrace(); } }