java - 从方法返回多个值

标签 java android sqlite

日安,我有一个问题。

所以我想从下面的方法返回多个值是我的代码:

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();
    }

我从网上搜索了所有内容,我非常需要答案。预先感谢您!

最佳答案

为了返回多个值,您需要将它们放入一个对象中并返回该对象。您可以使用 ListString[],但为此目的使用自定义类会更明确:

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/

相关文章:

java - 找不到配置文件 JAVA EE

java - 资源与 SQLite

android - 使用 SQLite 而不是 File 有什么优势?

java - For 循环在完成程序之前只运行一次

java - Tomcat+Spring环境下的Jersey找不到ComponentProvider。为什么?

java - Paytm 支付网关 Java Web 集成 - servlet 调用内的 jsp 示例有时由于提交的 javascript 而无法工作

android - 将值从一个 View 传递到另一个 View - React native

android - 通过 USB 从 Android 应用程序发送和接收数据

具有不同大小列的 Android GridView

sql - 选择总和最大