1
私はリストビューをsqliteデータベースにリンクしています。データベースには3つの項目がありますが、2番目と3番目の値をクリックするたびに、レコードセットの最初の値と同じ結果が得られます。レコードセット内の後続項目をどのように移動するのですか?リストビューは、クリックされたときに正しい行の詳細を表示しません。
私はリストビューをsqliteデータベースにリンクしています。データベースには3つの項目がありますが、2番目と3番目の値をクリックするたびに、レコードセットの最初の値と同じ結果が得られます。レコードセット内の後続項目をどのように移動するのですか?リストビューは、クリックされたときに正しい行の詳細を表示しません。
アダプタがすでにカーソルを使用して入力されている場合は、アダプタに供給されたカーソルを使用してデータを取得しないようにしてください。代わりにgetItem(int position)
を使用してください。これは、既にリスト内の正しい項目を指しているカーソルを返すべきです。あなたのコードは次のようになります。
lv.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
//retrieve database values
Cursor tempCursor = getItem(position);
Toast.makeText(getApplicationContext(), tempCursor.getString(tempCursor.getColumnIndex(DBAdapter.KEY_STATIONURL)), Toast.LENGTH_SHORT).show();
}
});
あなたはさらに一歩を行くと、それはあなたがちょうどあなたが必要な値を取得する* getKeyStationUrl()
に必要な特徴Data
*オブジェクトを返すように、あなたのCursorAdapterのgetItem(position)
を上書きすることができます。
ご協力いただきありがとうございます。非常に感謝しています:-) – user615099