Список, содержащий ссылку на возвращаемый объект - PullRequest
0 голосов
/ 12 июля 2020

Я создаю приложение, в котором у меня есть центральный ресайклер-просмотр, в котором перечислены элементы, которые пользователь будет вводить, под двумя кнопками, одна для добавления элементов, а другая для завершения. Проблема, с которой я сталкиваюсь, заключается в том, что, когда пользователь завершает задачу и нажимает кнопку fini sh, я хочу получить все данные, которые были перечислены на его экране, который находится внутри списка, и сохранить их в firebase, но я не могу получить эти данные в массиве форм, он всегда возвращает ссылку на объект.

Поиск целого rnet Я нашел, как использовать .toString в массиве, но он возвращает мне то же самое. Вот пример возврата, который я получаю.

return

код моего объекта

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

код моей кнопки fini sh, когда я перечисляю

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

1 Ответ

0 голосов
/ 12 июля 2020

toString () всегда будет возвращать ha sh объекта, если не переопределить, так как это метод, унаследованный от java .lang.Object и не указанный c вашему объекту

If вы хотите, чтобы toString возвращала переменную measure, затем добавьте в свой класс ListItem следующее:

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

Чтобы добавить больше записей в метод, просто добавьте еще + myData, но, возможно, убедитесь, что есть какой-то вид разделителя, чтобы сделать его читабельным - например, + " || " + или что-то в этом роде

Удачи с проектом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...