android – Enviar una variable de un Activity a una Clase

tengo una app que estoy desarrollando y necesito enviar una variable desde mi activity al Repo de mi RecyclerView de tipo class, para usarlo en un whereEqualTo de Firebase. Necesito ayuda porque no consigo como lograrlo.

Este es el codigo de mi Repo de tipo class

package com.ezdev.chepesdelivery.ui.RecyMenu

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.google.firebase.firestore.FirebaseFirestore

class RepoMenu {

    fun getTiendaData(): LiveData<MutableList<Plato>> {
        val mutableData = MutableLiveData<MutableList<Plato>>()
        FirebaseFirestore.getInstance().collection("Platos").whereEqualTo("tienda", "AquiVaMiVariable").get()
            .addOnSuccessListener { result ->
                mutableData.value = result.documents.map { snap ->
                    snap.run {
                        Plato(
                            getString("plato") ?: "default",
                            getString("descripcion") ?: "default",
                            getBoolean("stock") ?: false,
                            getString("precio") ?: "default",
                        )
                    }
                }.toMutableList()
            }


        return mutableData
    }


}

La variable la usare para filtrar los elementos que necesito con el whereEqualTo.

Y este es mi activity

package com.ezdev.chepesdelivery

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import com.ezdev.chepesdelivery.ui.RecyMenu.MyAdapterMenu
import com.ezdev.chepesdelivery.ui.RecyMenu.MyViewModelMenu
import com.google.firebase.firestore.FirebaseFirestore
import kotlinx.android.synthetic.main.activity_pedir.*


class PedirActivity : AppCompatActivity(), MyAdapterMenu.OnTiendaListener {

    private lateinit var adapter: MyAdapterMenu
    private val viewModel by lazy { ViewModelProvider(this).get(MyViewModelMenu::class.java)}


    private val db = FirebaseFirestore.getInstance()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_pedir)

        var nombreTienda = intent.getStringExtra("nombreTienda") //Este es la variable que necesito enviar
        var tiendaEmail = intent.getStringExtra("emailTienda")


        title = "Menu de $nombreTienda"

        adapter = MyAdapterMenu(this, this)

        recyclerViewMenu.layoutManager = LinearLayoutManager(this)
        recyclerViewMenu.addItemDecoration(DividerItemDecoration(this,DividerItemDecoration.VERTICAL))
        recyclerViewMenu.adapter = adapter
        observeData()


    }

    fun observeData(){
        viewModel.fetchTiendaData().observe(this, Observer {

            adapter.setListData(it)
            adapter.notifyDataSetChanged()

        })
    }

    override fun onItemClick(nombre: String) {



    }

}

La variable que necesito enviar es la que dice nombreTienda.

Bueno es seria todo, no se si tenga que compartir los demas codigos que estan en mi RecyclerView como mi Adapter o mi ViewModel, si es necesario para que me ayuden me dicen y los agrego.

poo – JAVA | Error | MVC | La clase importada no retorna los métodos

estuve revisando antes de formular la pregunta y no hay nada relacionado a lo siguiente.

En un proyecto JAVA usando MVC se crearon los respectivos paquetes Modelo, Vista y Controlador. En cada paquete se creo una clase Promedio con el respectivo nombre de paquete, el caso es que al desarrollar la clase PromedioModelo.java se crearon atributos y métodos; dichos atributos con su respectivo método get y set, además de un método llamado ‘solución’ que realizaba el calculo del promedio de números entregados. El caso es el siguiente, al momento de desarrollar la clase PromedioControlador.java cuando necesito importar los métodos de PromedioModelo estos no se importan, al tratar de usar la clase PromedioModelo en Apache NetBeans 12.0 directamente me sugiere ‘PromedioModelo.class…’ lo cual es incorrecto para lo que necesito realizar que es, utilizar los metodos de PromedioModelo, ya sea .getNumberX, .setNumberX, .solucion; Debo indicar que es el único error aparente, ya que NetBeans no menciona ningún error aparente.

Clase PromedioModelo.java

'''

package modelo;

public class PromedioModelo {

    float numeroUno;
    float numeroDos;
    float numeroTres;
    float resultado;      

    public float getNumeroUno() {
        return numeroUno;
    }

    public void setNumeroUno(float numeroUno) {
        this.numeroUno = numeroUno;
    }

    public float getNumeroDos() {
        return numeroDos;
    }

    public void setNumeroDos(float numeroDos) {
        this.numeroDos = numeroDos;
    }

    public float getNumeroTres() {
        return numeroTres;
    }

    public void setNumeroTres(float numeroTres) {
        this.numeroTres = numeroTres;
    }

    public float getResultado() {
        return resultado;
    }

    public void setResultado(float resultado) {
        this.resultado = resultado;
    }

    public float solucion(){
    
        this.setResultado((this.getNumeroUno()+this.getNumeroDos()+this.getNumeroTres())/3);
        return this.getResultado();
    }

}
'''

Clase PromedioControlador.java

'''

package controlador;

import modelo.PromedioModelo;
import vista.Promedio;

public class PromedioControlador {
    public static Promedio pro = new Promedio();
    public static void mostrar(){pro.setVisible(true);}
    public static void ocultar(){pro.setVisible(false);}


    public static void botonPromedio(){

        ocultar();
    
        PromedioControlador.mostrar();
    }

    public static void botonPrincipal() {

        ocultar();

        VistaControlador.mostrar();
    }

    public static void botonRegistro() {

        ocultar();

        RegistroControlador.mostrar();
    }

    public static void btnCalcular() {

        //Aquí debería poder utilizar el llamado al método de la clase PromedioModelo
        //Lo cual debería ser similar a esto: PromedioModelo.solucion();

    }
}
'''

java – Mostrar el total de km de todos los vehículos de una clase

Dejo aquí el ejercicio completo por si podéis ayudarme con mas partes y muchas gracias de antemano.

Una tienda de vehículos de ocasión nos ha pedido programar parte de su web. Debemos gestionar 2 tipos de vehículos: coches y furgonetas. Utiliza para ello una estructura dinámica.
Los atributos de todos los vehículos son: matricula, numKilometros.
Los coches tienen el atributo propiedad que podrá tomar como valores propio o alquilado.
Las furgonetas tendrán el atributo tonelaje que tomará únicamente los valores: Dos Toneladas, Tres Toneladas o Cuatro Toneladas. Dicho tonelaje deberá ser especificado al añadir cada furgoneta al ArrayList a partir de un menú (Ver ejemplo compilado)
Muestra el total de kilómetros de todos los vehículos. A continuación elimina aquellos que tengan el mismo número de kilómetros y vuelve a mostrar el total de kilómetros de todos los vehículos.
Al final del programa ofrece la posibilidad de listar por atributo de forma descendente al listado anterior mostrado:
1- Por matrícula.
2- Por número de kilómetros.
Vuelca dicha información listada a un fichero de salida con ruta absoluta al escritorio.
Controla 2 excepciones del sistema añadiendo con comentarios que realiza.

import java.util.ArrayList;
import java.util.Scanner;

public class ejVehiculosOcasion {

    static Scanner sc = new Scanner(System.in);

    //Se crea un ArrayList para guardar objetos de tipo Coche.
    static ArrayList<Vehiculo> vehiculos = new ArrayList();

    //metodo kmTotales 
    public static void kmTotales(ArrayList<Vehiculo> vehiculos){
    
        for (int i = 0; i < vehiculos.size(); i++) {
            System.out.println(vehiculos.get(i));
        }
    
    }
    
    //método main
    public static void main(String() args) {

        int nFurgoneta = 0, opcionFurgo = 0;

        vehiculos.add(new Coche("5543HTX", 50000.9, Propiedad.propio));
        vehiculos.add(new Coche("5678GWX", 72300.5, Propiedad.alquilado));
        vehiculos.add(new Coche("1414LLL", 8300.0, Propiedad.alquilado));
        vehiculos.add(new Coche("1234RTX", 50000.9, Propiedad.propio));

        do {
            
            System.out.println("Elija opción de zona de carga para la furgoneta: " + nFurgoneta);
            System.out.println("1. Dos toneladas.");
            System.out.println("2: Tres toneladas.");
            System.out.println("3: Cuatro toneladas.");
            opcionFurgo = sc.nextInt();
            
            switch(opcionFurgo){
            //crea la furgoneta con esos tonelajes segun la opcion
                case 1:
                    nFurgoneta++;
                    break;
                case 2:                    
                    nFurgoneta++;
                    break;
                case 3:
                    nFurgoneta++;
                    break;
                default:
                    System.out.println("Opcion no valida");
                    break;
            }
            //crea la furgoneta si nFurgoneta = 1/2/3
            //Estas furgonetas simplemente son las que pide por pantalla en el ejemplo 
            if (opcionFurgo==1) {
                vehiculos.add(new Furgoneta("3456FGN", 220000.0,Tonelaje.Cuatro_Toneladas));
            }else if(opcionFurgo==2){
                vehiculos.add(new Furgoneta("3487FGN", 220000.0,Tonelaje.Dos_Toneladas));
            }else{
                vehiculos.add(new Furgoneta("8282JGN", 131500.7,Tonelaje.Dos_Toneladas));
            }
            
        } while (nFurgoneta < 3);

        kmTotales(vehiculos);
        
    } //fin método main

}

Aquí pongo la Clase Vehículo y los hijos:

public class Vehiculo{
    
    //ATRIBUTOS
    // matricula / numKilometros /
    private String matricula;
    private double numKilometros;
    
    
    //CONSTRUCTOR
    public Vehiculo(String matricula, double numKilometros){
    
        this.matricula = matricula;
        this.numKilometros = numKilometros;
    
    }

    public Vehiculo() {
    }
    
    
    //GETTERS Y SETTERS

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public double getNumKilometros() {
        return numKilometros;
    }

    public void setNumKilometros(int numKilometros) {
        this.numKilometros = numKilometros;
    }

    @Override
    public String toString() {
        return "Vehiculo{" + "matricula=" + matricula + ", numKilometros=" + numKilometros + '}';
    }
}

Clases hijos:

public class Coche extends Vehiculo{
    
    Propiedad propiedad;

    public Coche(String matricula, double numKilometros, Propiedad propiedad) {
        super(matricula, numKilometros);
        this.propiedad = propiedad;
    }

    public Coche() {
    }
    

    public Propiedad getPropiedad() {
        return propiedad;
    }

    public void setPropiedad(Propiedad propiedad) {
        this.propiedad = propiedad;
    }

    @Override
    public String toString() {
        return "Coche{" + "propiedad=" + propiedad + '}';
    }
}

public class Furgoneta extends Vehiculo{
    
    Tonelaje tonelaje;

    public Furgoneta(String matricula, double numKilometros, Tonelaje tonelaje) {
        super(matricula, numKilometros);
        this.tonelaje = tonelaje;
    }

    public Furgoneta(Tonelaje tonelaje) {
        this.tonelaje = tonelaje;
    }

    public Tonelaje getTonelaje() {
        return tonelaje;
    }

    public void setTonelaje(Tonelaje tonelaje) {
        this.tonelaje = tonelaje;
    }

    @Override
    public String toString() {
        return "Furgoneta{" + "tonelaje=" + tonelaje + '}';
    } 
}

javascript – ¿Por que al seleccionar un elemento por clase no funciona mi evento y por id si funciona?

El problema que tengo es que al momento de seleccionar por:

const numero_12 = document.getElementsByClassName("numero1");

la funcion que debe imprimir el numero por consola no funciona, en cambio…
al seleccionar por:

const numero_12 = document.getElementsByID("numer");

Si funciona

Mi HTLM

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <!--Import fonts-->
    <link rel="preconnect" href="https://fonts.gstatic.com" />
    <link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@500&display=swap" rel="stylesheet" />
    <!--Import css-->
    <link rel="stylesheet" href="style.css" />
    <title>Calc</title>
  </head>
  <body>
    <div class="flex-container">
      <div class="grid-container">
        <div class="display">
          <div class="input">0</div>
        </div>
        <button class="number numero1" id="numer">1</button>
        <button class="number">2</button>
        <button class="number">3</button>
        <button class="operator">+</button>
        <button class="number">4</button>
        <button class="number">5</button>
        <button class="number">6</button>
        <button class="operator">-</button>
        <button class="number">7</button>
        <button class="number">8</button>
        <button class="number">9</button>
        <button class="operator">*</button>
        <button class="number">0</button>
        <button class="operator">.</button>
        <button class="operator">c</button>
        <button class="operator">=</button>
      </div>
    </div>
  </body>
  <script src="js/main.js"></script>
</html>

MI JS

const btn_number = document.getElementsByClassName("number");
const numero_12 = document.getElementsByClassName("numero1");

numero_12.onclick = function () {
  console.log("Soy Numero");
};

introducir la descripción de la imagen aquí

Como capturar el xpath de un texto o una clase con selenium python

Buen día, lo que sucede es que estoy tratando de capturar el xpath de un texto que esta incluido en un div, pero siempre recibo el mismo error no such element: Unable to locate element: {“method”:”xpath”,”selector”:”xpath que trato de capturar”}

tengo el siguiente código

from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
import selenium
from selenium import webdriver
import time


url = 'https://www.bbva.com.co/personas/productos/inversion/fondos/pais.html'
#Controlador de google schrome
driver = webdriver.Chrome(r'C:UsersseburitiAnaconda3Libsite- 
packagesseleniumwebdriverchromedriver.exe')
#Pagina a la que se le hara wescraping 
driver.get(url)
driver.maximize_window()
src = driver.find_element_by_id("content-iframe_copy").get_attribute("src")
driver.close()

driver2 = webdriver.Chrome(r'C:UsersseburitiAnaconda3Libsite- 
packagesseleniumwebdriverchromedriver.exe')
driver2.get(src)
driver2.maximize_window()
time.sleep(10)
imp = driver2.find_element_by_xpath("//*(@id='description')").text

La primera parte del código la tengo hecha porque lo que quiero extraer, el número 16.284,58 esta contenida en un iframe, agradecería mucho su ayuda, estoy aprendiendo.

url del iframe : https://bbva-cells-files.s3.amazonaws.com/cells/apps/bbva_es_ficha_global_am_cells/bbva_ficha_global_am_cells_co/master/cellsapp/prod/vulcanize/index.html#!/fichaco/CCAPAISCB

url original : https://www.bbva.com.co/personas/productos/inversion/fondos/pais.html

css – ¿Por que obtengo 2 veces la misma clase en sass con este código?

Hola a todos estoy tratando de hacer una página con sass y obtengo un resultado no esperado al usar el placeholder, ¿por que no me pone todo en la misma clase para evitar la repetición de código y que estoy haciendo mal?. Lo que quiero es tener un placeholder con un elemento flex centrado para evitar ponerlo cada vez ya que es un código que uso con frecuencia.

%flex-center {
    display: flex;
    justify-content: center;
    align-items: center;
}

.main-header__container {
    @extend %flex-center;
    justify-content: space-between;
    padding: 1em;
}

El resultado

.main-header__container {
  display: flex;
  justify-content: center;
  align-items: center;
}

.main-header__container {
  justify-content: space-between;
  padding: 1em;
}

java – Usar la variable de un método en otro, dentro de la misma clase

Necesito calcular el precio con descuento con el precio que se transformó a positivo en la validación del método setPrecio.
El código lo tengo de la siguiente manera:

    public void setPrecio(double precio) {
    this.precio = precio;
    if (precio<0){
        precio = precio * -1;
        System.out.println("Convertido en positivo " +precio);
    }else{
        System.out.println("Positivo: "+ precio);
    }
}

public double calcularPrecioDescuento(double porcentaje){
    return precio = (precio * (porcentaje/100)+precio);
}

Resulta que con esto, en el método calcularPrecioDescuento toma el dato de precio sin la validacion, de manera que cuando se ingresa un número negativo el resultado que se obtiene también es negativo.

poo – LLamar a una clase de otra clase ArrayList en JAVA

Hola chicos requiero de su oracional con una guía para finalizar:

En lo siguiente se muestra la información lo mas clara posible para identificar con la facilidad el requerimiento que solicito.

Clase Directorio

package com.cmc.entidades;

import java.util.ArrayList;
import java.util.Date;

public class Directorio {

// Atributos
private ArrayList<Contacto> contactos;
private Date fechaModifacion;

// Metodos
public boolean agregarContacto(Contacto contacto) {

    contactos.add(contacto);
    return true;
}

public Contacto buscarPorCedula(String cedula) {

    Contacto result = null;
    Contacto contact = null;
    for (int i = 0; i < contactos.size(); i++) {
        contact = contactos.get(i);
        if (cedula.equals(contact.getCedula())) {
            result = contact;
        }
    }
    return result;
}

public int contarPerdidos() {
    int contar = 0;

    Contacto contact = null;
    for (int i = 0; i < contactos.size(); i++) {
        contact = contactos.get(i);
        if (contact.getDireccion() == null) {
            contar++;

        }

    }

    return contar;
}

public int contarFijos() {

    int contar = 0;

    Contacto contact = null;
    for (int i = 0; i < contactos.size(); i++) {
        contact = contactos.get(i);
        if (contact.equals(contactos.equals("c"))) {
            contar++;

        }

    }

    return contar;
}

// Constructor
public Directorio() {
    super();
    contactos = new ArrayList<Contacto>();

}

// Getters && Setters
public ArrayList<Contacto> getContactos() {
    return contactos;
}

public void setContactos(ArrayList<Contacto> contactos) {
    this.contactos = contactos;
}

public Date getFechaModifacion() {
    return fechaModifacion;
}

public void setFechaModifacion(Date fechaModifacion) {
    this.fechaModifacion = fechaModifacion;
}

}

Clase Contacto

package com.cmc.entidades;

import java.util.ArrayList;

public class Contacto {

// Atributos
private String cedula;
private String nombre;
private String apellido;
private Direccion direccion;
private ArrayList<Telefono> telefonos;

// Metodos

public void agregarTelefono(Telefono telefono) {

    telefonos.add(telefono);
}

public void mostrarTelefonos() {
    Telefono telf = null;
    for (int i = 0; i < telefonos.size(); i++) {
        telf = telefonos.get(i);
        if (telf.getEstado().equals("C")) {
            System.out.println(telf.getTipo() + " - " + telf.getNombre());
        }
    }
}

public ArrayList<Telefono> recuperarIncorrectos() {
    ArrayList<Telefono> resultado = new ArrayList<Telefono>();

    Telefono telf = null;
    for (int i = 0; i < telefonos.size(); i++) {
        telf = telefonos.get(i);
        if (telf.getEstado().equals("E")) {
            resultado.add(telf);
        }
    }
    return resultado;
}

// Constructor
public Contacto(String cedula, String nombre, String apellido) {
    super();
    telefonos = new ArrayList<Telefono>();
    this.cedula = cedula;
    this.nombre = nombre;
    this.apellido = apellido;

}

public void imprimir() {

    System.out.println("****" + nombre + " " + apellido + "*******");
    if (this.getDireccion() != null) {
        System.out.println(
                "Direccion: " + this.direccion.getCallePrincipal() + " y " + 
 this.direccion.getCalleSecundaria());
    } else {
        System.out.println("No tienne asociada una direccion");
    }
}

// Getters && Setters

public String getCedula() {
    return cedula;
}

public void setCedula(String cedula) {
    this.cedula = cedula;
}

public String getNombre() {
    return nombre;
}

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

public String getApellido() {
    return apellido;
}

public void setApellido(String apellido) {
    this.apellido = apellido;
}

public Direccion getDireccion() {
    return direccion;
}

public void setDireccion(Direccion direccion) {
    this.direccion = direccion;
}

public ArrayList<Telefono> getTelefonos() {
    return telefonos;
}

public void setTelefonos(ArrayList<Telefono> telefonos) {
    this.telefonos = telefonos;
}

}

Clase Main

package com.cmc.test;

import com.cmc.entidades.Contacto;
import com.cmc.entidades.Direccion;
import com.cmc.entidades.Directorio;
import com.cmc.entidades.Telefono;

public class TestContarFijos {
public static void main(String() args) {
    Directorio directorio = new Directorio();
    Contacto c1=new Contacto("1234","Armando","Broncas");
    c1.setDireccion(new Direccion("ABC", "XYZ"));
    c1.agregarTelefono(new Telefono("0992920306","Movil"));
    c1.agregarTelefono(new Telefono("1234561","Convencional"));
    
    Contacto c2=new Contacto("234","Mark","Anthony");
    c2.setDireccion(new Direccion("ABC", "XYZ"));
    directorio.agregarContacto(c2);
    c2.agregarTelefono(new Telefono("099292030","Movil"));
    c2.agregarTelefono(new Telefono("1234560","CONVENCIONAL"));

    Contacto c3=new Contacto("9897","Nicolas","Mora");
    c3.setDireccion(new Direccion("ABC", "XYZ"));
    directorio.agregarContacto(c2);
    c3.agregarTelefono(new Telefono("5432231","Fijo"));
    c3.agregarTelefono(new Telefono("0992920307","Movil"));
    
    directorio.agregarContacto(c1);
    directorio.agregarContacto(c2);
    directorio.agregarContacto(c3);
    
    
    System.out.println("Fijos:"+directorio.contarFijos());
}
}

El resultado que me brinda es:

introducir la descripción de la imagen aquí

El resultado que debe ser:

introducir la descripción de la imagen aquí

*IMPORTANTE: No se puede modificar la clase Main

El ejercicio es :

En directorio agregar un método contarFijos que retorna cuantos contactos tienen teléfonos convencional y ademas están en estado C.

MI duda es como yo llamo a la clase telefono desde contactos para poder hacer la condicional??*

java – Instanciar una cola implementada con generics con una clase

tengo una pregunta que no se si puede ser un poco tonta. Tengo que implementar una cola con generics(ya lo hice) y a esa cola debo introducirle diferentes objetos de una clase que tambien tuve que implementar. El tema es que al usar la sintaxis para instanciar la pila me sale un error Bound mismatch, les dejo el codigo de como lo hice.

cola<Tripleta> colaTripleta = new cola<Tripleta>();

Tripleta es la clase de los objetos que quiero colocar en la pila y cola es la cola implementada con generics valga la redundancia

python – Cómo funcionan los módulos que hay clases y otras clase dentro

Esto va porque porque ejemplo, con “Pygame” la importarlo puedes crear un sprite, pero para ello lo heredas a tu clase, por ejemplo.

Import pygame
Class Jugador(pygame.sprite.Sprite)

“pygame” es el módulo, “sprite” es la clase, entonces ¿El “Sprite” es otra clase dentro de otra?