图片
嗨,我开发了一个使用 MySQL 数据库的应用程序。我有一个检索数据的代码,并试图以数据库的形式显示数据。
这是我的 java 代码,它访问数据库并尝试以表格的形式动态打印它。
我的问题是当我在手机上执行时应用程序强制关闭。
我收到以下错误。
这是我的 php 代码。
用于TableLayout
以表格的形式显示您的数据。另外要连接到 mySQL 数据库,您需要构建一个连接到数据库的 php 脚本。您还没有显示您的 php 脚本,所以请提供。
java.lang.ClassCastException:
“抛出表明代码已尝试将对象强制转换为它不是实例的子类。”
您已在 java 类中将 TableLayout 强制转换为 TextView。因此,将 TableLayout 更改为TextView
XML 布局中的。
[编辑]
现在知道了:
为要显示的错误创建一个新的 TextView。然后更改以下行:
error = (TextView) findViewById(R.id.myErrorView);
[编辑 2]
TableLayout 示例(未编译)
XML 布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/myHeading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TableLayout Example"
/>
<ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content">
<TableLayout
android:id="@+id/tablelayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TableRow android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginBottom="2dp" android:layout_gravity="center_horizontal">
<TextView android:id="@+id/tabletv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ID" android:textStyle="bold" android:layout_gravity="center_horizontal"/>
<TextView android:id="@+id/tabletv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Name" android:textStyle="bold" android:layout_gravity="center_horizontal"/>
<TextView android:id="@+id/tabletv3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Category" android:textStyle="bold" android:layout_gravity="center_horizontal"/>
<TextView android:id="@+id/tabletv4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Category" android:textStyle="bold" android:layout_gravity="center_horizontal"/>
</TableRow>
</TableLayout>
</ScrollView>
</LinearLayout>
Java 类
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
TableLayout table = (TableLayout) findViewById(R.id.tablelayout1);
TextView heading = (TextView) findViewById(R.id.myHeading);
// Your other codes
//////////////////////
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
TableRow row = new TableRow(this);
TableLayout.LayoutParams tableRowParams= new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT);
tableRowParams.setMargins(0, 0, 0, 2);
row.setGravity(Gravity.CENTER_HORIZONTAL);
row.setLayoutParams(tableRowParams);
TextView t1 = new TextView(this);
TextView t2 = new TextView(this);
TextView t3 = new TextView(this);
TextView t4 = new TextView(this);
t1.setText(""+json_data.getInt("prod_id"));
t2.setText(json_data.getString("prod_name"));
t3.setText(json_data.getString("prod_category"));
t4.setText(""+json_data.getDouble("prod_cost"));
t1.setGravity(Gravity.CENTER_HORIZONTAL);
t2.setGravity(Gravity.CENTER_HORIZONTAL);
t3.setGravity(Gravity.CENTER_HORIZONTAL);
t4.setGravity(Gravity.CENTER_HORIZONTAL);
row.addView(t1);
row.addView(t2);
row.addView(t3);
row.addView(t4);
table.addView(row);
}
希望这可以帮助!