日安,我有一个问题。
所以我想从下面的方法返回多个值是我的代码:
public static String getReferee(String referee_id, SQLiteDatabase sqLiteDatabase)
{
Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM tbl_referee", null);
String refereeInfo = null;
if (cursor != null)
{
if (cursor.moveToFirst())
{
do
{
String nameInRecord = cursor.getString(1);
if (nameInRecord.equals(referee_id))
{
String referee_name = cursor.getString(0); // 0 means table column of REFEREE NAME
String referee_game1 = cursor.getString(2); // 2 means table column of REFEREE GAME 1
String referee_game2 = cursor.getString(3); // 3 means table column of REFEREE GAME 2
refereeInfo = referee_name + referee_game1 + referee_game2;
break;
}
}
while (cursor.moveToNext());
}
}
return refereeInfo1,refereeInfo2,refereeInfo3,refereeInfo4;
}
如您所见,返回代码仅返回字符串refereeInfo,其中包含来 self 的查询的多个数据。我该如何返回多个字符串并将其传递给我的主要 Activity 。
下面的代码是我的主要 Activity :
//GET REFEREE PROFILE
private void getRefereeProfile()
{
String memberInfo = SQLiteFunctionUtility.getReferee(referee_id, mDbHelper.getSqliteObjectWithReadable());
if (memberInfo != null)
{
txtview1.setText(returnstatement1);
txtview2.setText(returnstatement2);
txtview3.setText(returnstatement3);
txtview4.setText(returnstatement4);
}
else
{
Toast.makeText(MainActivity.this, "No Referee Found", Toast.LENGTH_LONG).show();
}
我从网上搜索了所有内容,我非常需要答案。预先感谢您!
最佳答案
为了返回多个值,您需要将它们放入一个对象中并返回该对象。您可以使用 List
或 String[]
,但为此目的使用自定义类会更明确:
public static class Referee
{
private String name;
private String game1;
private String game2;
public Referee(String name, String game1, String game2)
{
this.name = name;
this.game1 = game1;
this.game2 = game2;
}
// Getters...
}
public static Referee getReferee(String referee_id, SQLiteDatabase sqLiteDatabase)
{
Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM tbl_referee", null);
String refereeInfo = null;
if (cursor != null)
{
if (cursor.moveToFirst())
{
do
{
String nameInRecord = cursor.getString(1);
if (nameInRecord.equals(referee_id))
{
String referee_name = cursor.getString(0); // 0 means table column of REFEREE NAME
String referee_game1 = cursor.getString(2); // 2 means table column of REFEREE GAME 1
String referee_game2 = cursor.getString(3); // 3 means table column of REFEREE GAME 2
return new Referee(referee_name, referee_game1, referee_game2);
}
} while (cursor.moveToNext());
}
}
return null;
}
如果您有一个名为 getReferee
的方法,则很好地表明您还应该拥有该方法返回的 Referee
类型。这样,您的代码就变得不言自明了。
您可以在主要 Activity 中使用新类型,如下所示:
private void getRefereeProfile()
{
Referee memberInfo = SQLiteFunctionUtility.getReferee(referee_id, mDbHelper.getSqliteObjectWithReadable());
if (memberInfo != null)
{
txtview1.setText(memberInfo.getName());
txtview2.setText(memberInfo.getGame1());
txtview3.setText(memberInfo.getGame2());
// what is txtView4 for?
}
else
{
Toast.makeText(MainActivity.this, "No Referee Found", Toast.LENGTH_LONG).show();
}
关于java - 从方法返回多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51260609/