es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo recuperar datos individuales de la base de datos de Room en Android y mostrarlos en un TextView

Estoy aprendiendo Android. Quiero recuperar una fila específica de datos usando la base de datos Room y mostrarla en un TextView después de hacer clic en el botón en el Fragment. Aquí hay un código fuente. Por favor, ayúdame a ordenarlo.

En la clase Dao

//Ver detalles de una fila específica
@Query(“SELECT * FROM Engine_List WHERE CHASSIS_NO = :CHASSIS_NO”)
Engin_Entity findSpecific_ChassisNo(String CHASSIS_NO);

En la clase Fragment

public class Fragment_RegistrationDetail extends Fragment {

private Engin_Entity engin_entity;
private Database_ENGN database_Engine;
private EnginList_Dao enginListDao;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflar el diseño para este fragmento
return inflater.inflate(R.layout.fragment__search_page, container, false);

database_Engine = Database_ENGN.getEngnDatabase(getContext());

List<engin_entity> engin_entity = database_Engine.engineList_Dao().
           findSpecific_ChassisNo(engin_entity.getStr_ChassisNo());

}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener una fila específica de datos utilizando la base de datos Room y mostrarla en un text view después de hacer clic en el botón en el fragmento, debes realizar los siguientes cambios:

    1. En tu clase Fragment, deberás agregar un botón y un text view a tu archivo de diseño. Luego, en el método onCreateView, inflarás el diseño y encontrarás las referencias a las vistas:
    public class Fragment_RegistrationDetail extends Fragment {
    
        private Database_ENGN database_Engine;
        private EnginList_Dao enginListDao;
        private Button searchButton;
        private TextView resultTextView;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
    
            View view = inflater.inflate(R.layout.fragment__search_page, container, false);
    
            database_Engine = Database_ENGN.getEngnDatabase(getContext());
            enginListDao = database_Engine.engineList_Dao();
    
            searchButton = view.findViewById(R.id.search_button);
            resultTextView = view.findViewById(R.id.result_text_view);
    
            searchButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String chassisNo = "ABC123"; // Reemplaza con el número de chasis que deseas buscar
                    Engin_Entity engine = enginListDao.findSpecific_ChassisNo(chassisNo);
                    resultTextView.setText(engine.getStr_CustomerName()); // Muestra el nombre del cliente en el text view
                }
            });
    
            return view;
        }
    }
    
    1. En tu clase Engin_Entity, deberás agregar métodos getter para los campos que deseas mostrar en el text view:
    @Entity(tableName = "Engine_List")
    public class Engin_Entity {
    
        @PrimaryKey(autoGenerate = true)
        private int engn_id;
    
        private String str_DUE_AGMTNO;
        private String str_CustomerName;
        private int POS_NO;
        private String str_REG_NUM;
        private String str_ChassisNo;
        private String str_ENG_NO;
        private String str_Model_No;
        private int first_ContactNo;
        private String first_ContactName;
        private int second_ContactNo;
        private String second_ContactName;
    
        public int getEngn_id() {
            return engn_id;
        }
    
        public void setEngn_id(int engn_id) {
            this.engn_id = engn_id;
        }
    
        public String getStr_DUE_AGMTNO() {
            return str_DUE_AGMTNO;
        }
    
        public void setStr_DUE_AGMTNO(String str_DUE_AGMTNO) {
            this.str_DUE_AGMTNO = str_DUE_AGMTNO;
        }
    
        public String getStr_CustomerName() {
            return str_CustomerName;
        }
    
        public void setStr_CustomerName(String str_CustomerName) {
            this.str_CustomerName = str_CustomerName;
        }
    
        public int getPOS_NO() {
            return POS_NO;
        }
    
        public void setPOS_NO(int POS_NO) {
            this.POS_NO = POS_NO;
        }
    
        public String getStr_REG_NUM() {
            return str_REG_NUM;
        }
    
        public void setStr_REG_NUM(String str_REG_NUM) {
            this.str_REG_NUM = str_REG_NUM;
        }
    
        public String getStr_ChassisNo() {
            return str_ChassisNo;
        }
    
        public void setStr_ChassisNo(String str_ChassisNo) {
            this.str_ChassisNo = str_ChassisNo;
        }
    
        public String getStr_ENG_NO() {
            return str_ENG_NO;
        }
    
        public void setStr_ENG_NO(String str_ENG_NO) {
            this.str_ENG_NO = str_ENG_NO;
        }
    
        public String getStr_Model_No() {
            return str_Model_No;
        }
    
        public void setStr_Model_No(String str_Model_No) {
            this.str_Model_No = str_Model_No;
        }
    
        public int getFirst_ContactNo() {
            return first_ContactNo;
        }
    
        public void setFirst_ContactNo(int first_ContactNo) {
            this.first_ContactNo = first_ContactNo;
        }
    
        public String getFirst_ContactName() {
            return first_ContactName;
        }
    
        public void setFirst_ContactName(String first_ContactName) {
            this.first_ContactName = first_ContactName;
        }
    
        public int getSecond_ContactNo() {
            return second_ContactNo;
        }
    
        public void setSecond_ContactNo(int second_ContactNo) {
            this.second_ContactNo = second_ContactNo;
        }
    
        public String getSecond_ContactName() {
            return second_ContactName;
        }
    
        public void setSecond_ContactName(String second_ContactName) {
            this.second_ContactName = second_ContactName;
        }
    }
    
    1. En tu interfaz EnginList_Dao, deberás cambiar el parámetro del método findSpecific_ChassisNo a String:
    @Dao
    public interface EnginList_Dao {
    
        //Ver detalles de una fila específica
        @Query("SELECT * FROM Engine_List WHERE str_ChassisNo = :chassisNo" )
        Engin_Entity findSpecific_ChassisNo(String chassisNo);
    
        // Agrega otros métodos aquí
    }
    

    Con estos cambios, deberías poder buscar una fila específica de datos y mostrarla en un text view cuando se hace clic en el botón. Ten en cuenta que deberás reemplazar el número de chasis codificado en el código con una variable o con la entrada del usuario.

Comments are closed.