2012-01-14 11 views
1

私は、警告ダイアログの動作を理解する上で助けが必要です。私は現在、SQLiteデータベースから選手のリストを取得する作業ダイアログを持っています。このアイデアは、ユーザーがリストから選んだプレイヤーを選択し、その名前を変数に格納することです。以下のコードスニペットは私に名前の位置整数を与えます。AlertDialog with Cursor

return new AlertDialog.Builder(this) 
.setCancelable(false) 
.setTitle("Choose a Player") 
.setSingleChoiceItems(dba.getAllPlayers(), -1, Constants.playerName, new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int item) { 

***** get the name of the player selected **** 
dialog.dismiss(); 
startMenu(); 
} 
}) 
.create(); 

カーソルを参照するには構文が必要です。私は配列のより基本的なリストを理解し、doco(http://developer.android.com/guide/topics/ui/dialogs.html)に従ってその配列(items [item])から選択された項目を参照していますが、私の呼び出しからデータベースへのリスティングをどのように参照するのですか?

試しましたが、「CursorIndexOutOfBoundsException:Index -1が要求され、サイズが1である」というエラーが表示されます。

ありがとうございました。誰かが私のためにこれについていくつかの光を当てることを願っています。乾杯。

グレン ごなければCOBOLプログラマーのAndroid

答えて

2

に非常に新しい を熟成:あなたはCursorから列番号item内の文字列を検索するには、Androidを言っている

playerName = dba.getAllPlayers().getString(item); 

。もちろん、これはまったく意味がありません。あなたが必要とするのは、ポジションを求めることです。したがって、これは良く見えます:

final Cursor cursor = dba.getAllPlayers() 
.setSingleChoiceItems(cursor, -1, Constants.playerName, new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int item) { 

cursor.moveToPosition(item); 
String blah = cursor.getString(cursor.getColumnIndex(Constants.playerName)); 
+0

素晴らしい、優れた、素晴らしいです。あなたは私のAndroidの教祖です。ありがとうクリスチャン。 – user1148731