Exampl show dialog TDataSet
Partner: TFixedFormatDataSet;
------------------------
begin
DialogDataSet(Partner);
end;
-------------------------------
function TForm1.DialogDataSet(const ADataSet: TDataSet): boolean;
var
javaAndroidAppAlertDialogBuilderClass: JClass = nil;
javaCharSequence: JClass = nil;
javaMethod_AlertDialogBuilder_new,
javaMethod_AlertDialogBuilder_show: JMethodID;
JavaMethod_LCLDoPrepareSelectItemDialog: JMethodID;
javaAlertDialog: JObject;
javaObjectArray: JObjectArray;
// array for the parameters
lParams: array[0..2] of JValue;
lJavaString: JString;
i,j: Integer;
FieldText: String;
begin
// First get the classes
javaAndroidAppAlertDialogBuilderClass := javaEnvRef^^.FindClass(javaEnvRef, 'android/app/AlertDialog$Builder');
javaCharSequence := javaEnvRef^^.FindClass(javaEnvRef, 'java/lang/String');//'java/lang/CharSequence');
// final AlertDialog.Builder ad = new AlertDialog.Builder(this);
javaMethod_AlertDialogBuilder_new := javaEnvRef^^.GetMethodID(javaEnvRef, javaAndroidAppAlertDialogBuilderClass, '<init>', '(Landroid/content/Context;)V');
lParams[0].l := javaActivityObject;
javaAlertDialog := javaEnvRef^^.NewObjectA(javaEnvRef, javaAndroidAppAlertDialogBuilderClass, javaMethod_AlertDialogBuilder_new, @lParams[0]);
// Very strangely in the emulator it crashes if we don't refresh the Activity class here
javaActivityClass := javaEnvRef^^.FindClass(javaEnvRef, PChar(CDWidgetset.ActivityClassName));
JavaMethod_LCLDoPrepareSelectItemDialog := javaEnvRef^^.GetMethodID(javaEnvRef, javaActivityClass, 'LCLDoPrepareSelectItemDialog',
'([Ljava/lang/CharSequence;ILandroid/app/AlertDialog$Builder;)V');
javaObjectArray := javaEnvRef^^.NewObjectArray(javaEnvRef, ADataSet.RecordCount, javaCharSequence, javaEnvRef^^.NewStringUTF(javaEnvRef, ''));
lParams[0].l := javaObjectArray;
ADataSet.First; j:=0;
While not ADataSet.Eof do
begin
FieldText := '';
For i:=0 to ADataSet.Fields.Count -1 do
FieldText := FieldText +#10#13+ADataSet.Fields[i].AsString;
lJavaString :=javaEnvRef^^.NewStringUTF(javaEnvRef, PChar(FieldText));
javaEnvRef^^.SetObjectArrayElement(javaEnvRef, javaObjectArray, j, lJavaString);
ADataSet.Next;
inc(j);
end;
lParams[1].i := -1;
lParams[2].l := javaAlertDialog;
javaEnvRef^^.CallVoidMethodA(javaEnvRef, javaActivityObject, JavaMethod_LCLDoPrepareSelectItemDialog, @lParams[0]);
// ad.show();
javaMethod_AlertDialogBuilder_show := javaEnvRef^^.GetMethodID(javaEnvRef, javaAndroidAppAlertDialogBuilderClass, 'show', '()Landroid/app/AlertDialog;');
javaEnvRef^^.CallObjectMethod(javaEnvRef, javaAlertDialog, javaMethod_AlertDialogBuilder_show);
end;
Can it make a instead DialogDataSet TListView