SQLiteデータベースからListViewを作成しましたが、各ListViewアイテムにリスナーを追加する方法に固執しています。そのアイテムがクリックされると、そのアイテムに関する詳細情報を持つ別のページを表示できます。データベースはほんの一例です。どんな助けもありがとう。ListViewにリスナーを追加する
public class Database extends ListActivity {
private final String SAMPLE_DB_NAME = "myFriendsDb";
//private final String SAMPLE_TABLE_NAME = "friends";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<String> results = new ArrayList<String>();
SQLiteDatabase db = null;
try {
db = this.openOrCreateDatabase(SAMPLE_DB_NAME, MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS people" +
" (LastName VARCHAR, FirstName VARCHAR," +
" Country VARCHAR, Age INT(3));");
db.execSQL("INSERT INTO people" +
" Values ('Jones','Bob','UK',30);");
db.execSQL("INSERT INTO people" +
" Values ('Smith','John','UK',40);");
db.execSQL("INSERT INTO people" +
" Values ('Thompson','James','UK',50);");
Cursor c = db.rawQuery("SELECT FirstName, LastName FROM people", null);
if (c != null) {
if (c.moveToFirst()) {
do {
String firstName = c.getString(c.getColumnIndex("FirstName"));
String lastName = c.getString(c.getColumnIndex("LastName"));
results.add("" + firstName + " " + lastName);
}while (c.moveToNext());
}
}
this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,results));
} catch (SQLiteException se) {
Log.e(getClass().getSimpleName(), "Could not create or Open the database");
} finally {
if (db != null)
db.execSQL("DELETE FROM people");
db.close();
}
}
}
これは素晴らしい、完璧です!どうもありがとうございました。数時間前にここに投稿すると思っていたはずです! – user1362255
ListViewでクリックしたアイテムの値を次のアクティビティに渡すにはどうすればよいですか? – user1362255
上記のコードを参照してください。私は 'tmpIntent.putExtra(SHOWITEMINTENT_EXTRA_FETCHROWID、position)'行でクリックした項目の位置を送った。 'startActivityForResult'を介して呼び出された新しいアクティビティ(プレースホルダ名" 'YourActivityForShowingItem'"を使用)では、そのonCreate関数内で単に 'int tmpPos = getIntent()。getIntExtra(SHOWITEMINTENT_EXTRA_FETCHROWID、-1);を呼び出します。 '上の位置の整数を取得します(tmpPosは-1になります)。 – epichorns