No se pudo ejecutar el método para android:onClick en Android Studio.
Estoy intentando mostrar una base de datos en Android Studio usando Java con ListView. Mi aplicación se está bloqueando y no sé por qué. En la actividad Home he insertado un botón (onClick-getData) y un ListView. Mi código es:
HomeActivity.java (MainActivity es el splasher)
package com.example.acam<em>try</em>2;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.List;
import java.util.Map;
public class HomeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
SimpleAdapter ad;
public void GetData(View v) {
ListView lstview = (ListView) findViewById(R.id.listView1);
List<><string, string="">> Mydatalist = null;
ListItem Mydata = new ListItem();
Mydatalist=Mydata.getlist();
String[] Fromw = {"City", "Id_Of_City"};
int[] Tow = {R.id.City_name, R.id.City_id};
ad = new SimpleAdapter(HomeActivity.this, Mydatalist, R.layout.listlayout, Fromw, Tow);
lstview.setAdapter(ad);
}
}
ConnectionToCities donde conecto la base de datos:
package com.example.acam_try_2;
import android.annotation.SuppressLint;
import android.os.StrictMode;
import android.util.Log;
import java.sql.Connection;
import java.sql.DriverManager;
public class ConnectionToCities {
ConnectionToCities connection;
String ip, port, db, un, pass;
@SuppressLint("NewApi")
public ConnectionToCities conclass() {
ip = "192.168.3.10";
db = "Cities_names";
un = "Stefan";
pass = "stefan";
port = "1433";
StrictMode.ThreadPolicy tpolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(tpolicy);
Connection con = null;
String ConnectionURL = null;
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
ConnectionURL= "jdbc:jtds:sqlserver://"+ip+":"+port+";"+ "databaseName="+ db+ ";user="+un+";password="+pass+";";
con = DriverManager.getConnection(ConnectionURL);
} catch (Exception ex) {
Log.e("Error :", ex.getMessage());
}
return (ConnectionToCities) con;
}
}
ListItem.java:
package com.example.acam_try_2;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.sql.Connection;
public class ListItem {
Connection connection;
String ConnectionResult = "";
Boolean isSuccess = false;
public List<><string, string="">> getlist() {
List<><string, string="">> data = null;
data = new ArrayList<><string, string="">>();
try {
ConnectionToCities connection_to_cities = new ConnectionToCities();
connection = (Connection) connection_to_cities.conclass();
if (connection != null) {
String qu = "SELECT * FROM Cities";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(qu);
while (resultSet.next()) {
Map<string, string=""> dtname = new HashMap<string, string="">();
dtname.put("City_name", resultSet.getString("City_name"));
dtname.put("City_id", resultSet.getString("City_id"));
data.add(dtname);
}
ConnectionResult = "Succes";
isSuccess = true;
connection.close();
} else {
ConnectionResult = "Failed";
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return data;
}
}
listlayout.xml:
“`
<androidx.constraintlayout.widget.constraintlayout xmlns:android=”http://schemas.android.com/apk/res/android” android:layout_width=”match_parent” android:layout_height=”match_parent” xmlns:tools=”http://schemas.android.com/tools”>
El error parece ser causado por una
ClassCastException
en el métodoconclass
deConnection_to_Cities.java
. El código está intentando convertir un objetonet.sourceforge.jtds.jdbc.JtdsConnection
en un objetocom.example.acam_try_2.Connection_to_Cities
, lo cual no es posible.Para solucionar este error, debe cambiar el tipo de retorno del método
conclass
aConnection
y eliminar la conversión aConnection_to_Cities
. Además, asegúrese de que el controlador JDBC esté correctamente agregado a su proyecto.Aquí hay una versión actualizada de la clase
Connection_to_Cities.java
:Además, asegúrese de haber agregado los siguientes permisos a su archivo
AndroidManifest.xml
:Una vez que haya realizado estos cambios, intente ejecutar su aplicación nuevamente y vea si se resuelve el error.