如何在android中获取gettersetter方法的值?
How to get value of getter setter method in android?
我在这里阅读了很多问题,但我现在仍然没有找到适合我案例的任何正确答案
所以我有这样的代码
VisitReport.java
public class VisitReport{
public static final String TABLE_NAME = "VisitReport";
public static final String COLUMN_ID = "ID";
public static final String COLUMN_VisitPurpose = "VisitPurpose";
public static final String COLUMN_VisitResult = "VIsitResult";
private int id;
private String VisitPurpose;
private String VisitResult;
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_VisitPurpose + " TEXT,"
+ COLUMN_VisitResult + " TEXT,"
+ ")";
public VisitReport() {
}
public VisitReport(
int id,
String VisitPurpose,
String VisitResult
){
this.id = id;
this.VisitPurpose = VisitPurpose;
this.VisitResult = VisitResult;
}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getVisitPurpose() { return VisitPurpose; }
public void setVisitPurpose(String VisitPurpose) { this.VisitPurpose = VisitPurpose;}
public String getVisitResult() { return VisitResult; }
public void setVisitResult(String VisitResult) { this.VisitResult = VisitResult;}
}
DatabaseHelper.java
(我用的一段代码)
public VisitReport getVisitReport(long id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(VisitReport.TABLE_NAME,
new String[]{
VisitReport.COLUMN_ID,
VisitReport.COLUMN_VisitPurpose,
VisitReport.COLUMN_VisitResult,
},
VisitReport.COLUMN_ID + "=?",
new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null){
cursor.moveToFirst();
}
VisitReport vr = new VisitReport(
cursor.getInt(cursor.getColumnIndex(VisitReport.COLUMN_ID)),
cursor.getString(cursor.getColumnIndex(VisitReport.COLUMN_VisitPurpose)),
cursor.getString(cursor.getColumnIndex(VisitReport.COLUMN_VisitResult))
cursor.close();
return vr;
}
我想使用 bridge module
将值传递给 react native
,但出现错误
Cannot convert argument of type class mypackage.VisitReport
这是我试过的代码:
@ReactMethod
public void getVisitReport(int id, Callback cb) {
DatabaseHelper db = new DatabaseHelper(reactContext);
cb.invoke(db.getVisitReport(id));
}
找到 作为我的参考 我仍然不明白这些是什么意思,因为当我记录 getVisitReport()
的值时,我得到了 mypackage.VisitReport@12d960c9
但我不知道这个
的意思
我做错了什么吗?任何人都可以帮助我如何让它工作?
猜测类似以下的方法可能有效:-
VisitReport vr = db.getVisitorReport(id);
cb.invoke("ID=" +String.valueOfvr.getid()) + ", Purporse=" + vr.getVisitPurpose"); // etc
- 这假定调用可以接受字符串。
您可以通过以下方式单独访问每个值
db.getVisitReport(id).getVisitPurpose
或者
VisitReport vr = db.getVisitReport(id); vr.getVisitPurpose
那是因为getVisitReport()
returns一个对象。对象是 class 的实例,它包含一组变量。
当您执行 getVisitReport(id).toString()
时,您正在返回对象本身的 字符串表示形式 , 而不是 它的值。
如果你想同时获取对象的所有属性你需要在VisitReport
里面创建一个新的方法,其中returns所有的属性,例如一个对象数组(因为 Java 中的所有对象都扩展对象,请参阅 How to declare an array of different data types)。
请确保您阅读了有关 java 和对象的更多信息。这是一个很好的link:
https://www.tutorialspoint.com/java/java_object_classes.htm
我在这里阅读了很多问题,但我现在仍然没有找到适合我案例的任何正确答案
所以我有这样的代码
VisitReport.java
public class VisitReport{
public static final String TABLE_NAME = "VisitReport";
public static final String COLUMN_ID = "ID";
public static final String COLUMN_VisitPurpose = "VisitPurpose";
public static final String COLUMN_VisitResult = "VIsitResult";
private int id;
private String VisitPurpose;
private String VisitResult;
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_VisitPurpose + " TEXT,"
+ COLUMN_VisitResult + " TEXT,"
+ ")";
public VisitReport() {
}
public VisitReport(
int id,
String VisitPurpose,
String VisitResult
){
this.id = id;
this.VisitPurpose = VisitPurpose;
this.VisitResult = VisitResult;
}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getVisitPurpose() { return VisitPurpose; }
public void setVisitPurpose(String VisitPurpose) { this.VisitPurpose = VisitPurpose;}
public String getVisitResult() { return VisitResult; }
public void setVisitResult(String VisitResult) { this.VisitResult = VisitResult;}
}
DatabaseHelper.java
(我用的一段代码)
public VisitReport getVisitReport(long id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(VisitReport.TABLE_NAME,
new String[]{
VisitReport.COLUMN_ID,
VisitReport.COLUMN_VisitPurpose,
VisitReport.COLUMN_VisitResult,
},
VisitReport.COLUMN_ID + "=?",
new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null){
cursor.moveToFirst();
}
VisitReport vr = new VisitReport(
cursor.getInt(cursor.getColumnIndex(VisitReport.COLUMN_ID)),
cursor.getString(cursor.getColumnIndex(VisitReport.COLUMN_VisitPurpose)),
cursor.getString(cursor.getColumnIndex(VisitReport.COLUMN_VisitResult))
cursor.close();
return vr;
}
我想使用 bridge module
将值传递给 react native
,但出现错误
Cannot convert argument of type class mypackage.VisitReport
这是我试过的代码:
@ReactMethod
public void getVisitReport(int id, Callback cb) {
DatabaseHelper db = new DatabaseHelper(reactContext);
cb.invoke(db.getVisitReport(id));
}
找到 getVisitReport()
的值时,我得到了 mypackage.VisitReport@12d960c9
但我不知道这个
我做错了什么吗?任何人都可以帮助我如何让它工作?
猜测类似以下的方法可能有效:-
VisitReport vr = db.getVisitorReport(id);
cb.invoke("ID=" +String.valueOfvr.getid()) + ", Purporse=" + vr.getVisitPurpose"); // etc
- 这假定调用可以接受字符串。
您可以通过以下方式单独访问每个值
db.getVisitReport(id).getVisitPurpose
或者
VisitReport vr = db.getVisitReport(id); vr.getVisitPurpose
那是因为getVisitReport()
returns一个对象。对象是 class 的实例,它包含一组变量。
当您执行 getVisitReport(id).toString()
时,您正在返回对象本身的 字符串表示形式 , 而不是 它的值。
如果你想同时获取对象的所有属性你需要在VisitReport
里面创建一个新的方法,其中returns所有的属性,例如一个对象数组(因为 Java 中的所有对象都扩展对象,请参阅 How to declare an array of different data types)。
请确保您阅读了有关 java 和对象的更多信息。这是一个很好的link: https://www.tutorialspoint.com/java/java_object_classes.htm