写真
こんにちは、MySQL データベースを使用するアプリを開発しました。データを取得するコードがあり、データベースの形式でデータを表示しようとしています。
これは、データベースにアクセスし、テーブルの形式で動的に印刷しようとする私の Java コードです。
私の問題は、電話で実行するとアプリが強制終了することです。
次のエラーが発生しました。
これは私のphpコードです。
データをテーブル形式で表示するために使用TableLayout
します。また、mySQLデータベースに接続するには、データベースに接続するphpスクリプトを作成する必要があります。phpスクリプトを表示していないので、それを提供してください。
java.lang.ClassCastException:
「コードが、インスタンスではないサブクラスにオブジェクトをキャストしようとしたことを示すためにスローされます。」
JavaクラスでTableLayoutをTextViewとしてキャストしました。TextView
したがって、 XMLレイアウトでTableLayoutをに変更します。
[編集]
今すぐ入手:
表示するエラーの新しい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);
}
お役に立てれば!