0
SimpleCursorAdaptorを使用したMy ListViewはフィールド値ではなく各DBクエリ行のフィールド名を表示しています。Android SimpleCursorAdapterはSQLite DBのフィールド値の代わりにフィールド名を表示するだけです
私のJavaコード:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center_horizontal"
>
<TextView
style="@style/TextAppearance.AppCompat.Headline"
android:textColor="@color/WHITE"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="Date"
/>
<TextView
style="@style/TextAppearance.AppCompat.Headline"
android:textColor="@color/WHITE"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="AWD"
/>
<TextView
style="@style/TextAppearance.AppCompat.Headline"
android:textColor="@color/WHITE"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="AWS"
/>
<TextView
style="@style/TextAppearance.AppCompat.Headline"
android:textColor="@color/WHITE"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="TWD"
/>
<TextView
style="@style/TextAppearance.AppCompat.Headline"
android:textColor="@color/WHITE"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="TWS"
/>
</LinearLayout>
<ListView
android:id="@+id/WindTableListView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
及び2)wind_row.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/LV_date"
android:textColor="@color/WHITE"
style="@style/TextAppearance.AppCompat.Body2"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/LV_awd"
android:textColor="@color/WHITE"
style="@style/TextAppearance.AppCompat.Body2"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/LV_aws"
android:textColor="@color/WHITE"
style="@style/TextAppearance.AppCompat.Body2"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/LV_twd"
android:textColor="@color/WHITE"
style="@style/TextAppearance.AppCompat.Body2"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/LV_tws"
android:textColor="@color/WHITE"
style="@style/TextAppearance.AppCompat.Body2"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
/>
</LinearLayout>
から、ここで
package com.kaiserware.sailingrace;
import android.app.Activity;
import android.app.ListActivity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.SimpleCursorAdapter;
import android.util.Log;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class list_wind_table extends Activity {
private static final String LOG_TAG = list_wind_table.class.getSimpleName();
private Cursor cursor = null;
private SQLiteDatabase db = null;
private sqlWindDataHelper dbhelper = new sqlWindDataHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
long raceID;
super.onCreate(savedInstanceState);
setContentView(R.layout.show_wind_data);
setTitle("RaceApp - Wind Data Display");
// check if we have any wind records for this raceID.
db = dbhelper.getWritableDatabase();
if (db.isOpen()) {
// get the last race in the SQLite DB
String sql = "SELECT * FROM "+sqlWindDataHelper.RaceEntry.TABLE_NAME;
sql += " ORDER BY " + sqlWindDataHelper.RaceEntry.COLUMN_ID+" DESC";
cursor = db.rawQuery(sql, null);
Log.d(LOG_TAG, cursor.getCount()+" records found in query="+sql);
if (cursor.moveToFirst()) {
raceID = (long) cursor.getLong(sqlWindDataHelper.COL_RACE_ID);
sql = "SELECT * FROM " + sqlWindDataHelper.WindEntry.TABLE_NAME;
sql += " WHERE " + sqlWindDataHelper.WindEntry.COLUMN_RACE + "='" + raceID + "'";
sql += " ORDER BY " + sqlWindDataHelper.WindEntry.COLUMN_DATE + " DESC";
} else {
raceID = 9999;
sql = "SELECT * FROM " + sqlWindDataHelper.WindEntry.TABLE_NAME;
sql += " ORDER BY " + sqlWindDataHelper.WindEntry.COLUMN_DATE + " DESC";
}
// fetch all wind records with the ID = raceID
cursor = db.rawQuery(sql, null);
if (cursor!=null && cursor.getCount()>0) {
cursor.moveToFirst();
Log.d(LOG_TAG, cursor.getCount()+" records found in query="+sql);
String[] fromColumns = new String[] {
sqlWindDataHelper.WindEntry.COLUMN_DATE,
sqlWindDataHelper.WindEntry.COLUMN_AWD,
sqlWindDataHelper.WindEntry.COLUMN_AWS,
sqlWindDataHelper.WindEntry.COLUMN_TWD,
sqlWindDataHelper.WindEntry.COLUMN_TWS
};
int[] toViews = new int[] {R.id.LV_date, R.id.LV_awd, R.id.LV_aws, R.id.LV_twd, R.id.LV_tws};
// create the adapter using the cursor pointing to the desired data
// as well as the row layout information
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.show_wind_data, cursor, fromColumns, toViews, 1);
ListView WindListView = (ListView) findViewById(R.id.WindTableListView);
if (WindListView == null) {
Toast toast = Toast.makeText(this, "Could not initialize the Simple Cursor Adapter", Toast.LENGTH_LONG);
toast.show();
} else {
WindListView.setAdapter(adapter);
}
} else {
Toast toast = Toast.makeText(this, "No wind records found for Race ID "+raceID, Toast.LENGTH_LONG);
toast.show();
}
} else {
Toast toast = Toast.makeText(this, "Could not open the SQLite database", Toast.LENGTH_LONG);
toast.show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
dbhelper.closeDB(cursor, db);
}
}
は私の2 XMLS 1)show_wind_data.xmlですデバッグコード私はクエリが風データの26行を生成することを知っている。 DATE AWD AWS TWD TWS DATEのAWD AWS TWD TWS .....など
私は何をしないのです。しかしLISTVIEWは唯一の26行を生成しますか?
PS:文字列変数sqlWindDataHelper.WindEntry.COLUMN_DATE = "Date"などには、SQLite DBテーブルの列名が含まれています。
ここで、2番目のxml、wind_rowを使用しますか?あなたのアクティビティのコードは、simplecursoradapterの最初のxml show_wind_data.xlmを使用しているようですが、textview IDは2番目のxmlのものです。 – masp