首页 > 解决方案 > 列表列出返回对象引用

问题描述

我正在制作一个应用程序,其中我有一个中央回收视图,其中列出了用户将键入的项目,在 2 个按钮下方,一个用于添加项目,另一个用于完成。我遇到的问题是,当用户完成任务并单击完成时,我想获取列表中他的屏幕上列出的所有数据并将其存储在 firebase 中,但我无法获取此数据在形状数组中,它总是返回对象引用。

在互联网上搜索我发现了如何在数组中使用 .toString ,但它返回给我同样的东西。这是我收到的退货示例。

返回

我的对象的代码

public class ListItem {
    private float measure;

    public ListItem(float measure) {
        this.measure = measure;
    }

    public float getMeasure() {
        return measure;
    }

    public void setMeasure(float measure) {
        this.measure = measure;
    }
}

我的按钮代码添加

private View.OnClickListener addItem = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DialogForm();

            mAdapter.notifyItemInserted(listItems.size());
        }
    };
void DialogForm() {
        AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);

        final View customLayout = getLayoutInflater().inflate(R.layout.layout_dialog, null);
        alert.setView(customLayout);

        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                EditText measure = customLayout.findViewById(R.id.edit_measure);
                String response = measure.getText().toString();
                if (response.isEmpty() || response.equals("0")) {
                    Toast.makeText(MainActivity.this, "A medida não pode ser vazia",
                            Toast.LENGTH_SHORT).show();
                } else {
                    listItems.add(new ListItem(Float.parseFloat(response)));
                    btnFinish.setEnabled(true);
                    btnFinish.setBackgroundResource(R.drawable.bg_button_enabled);
                }
            }
        });

        AlertDialog dialog = alert.create();
        dialog.show();
    }

当我列出时,我的按钮代码完成

private View.OnClickListener finishListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            for (int i=0; i<listItems.size(); i++){
                Log.d("teste", listItems.get(i).toString());
            }
        }
    };

标签: javaandroid

解决方案


如果不覆盖 toString() 将始终返回对象的哈希值,因为它是从 java.lang.Object 继承的方法而不是特定于您的对象

如果您希望 toString 返回measure变量,请将以下内容添加到您的 ListItem 类

@Override
public String toString() {
    return Integer.toString(measure);
}

为了向该方法添加更多条目,只需添加另一个条目,+ myData但可能要确保有某种分隔符以使其具有波纹可读性 - 例如+ " || " +或其他

祝项目顺利


推荐阅读