Сброс списка при возврате на страницу? - PullRequest
0 голосов
/ 29 апреля 2019

Я использую Android Studio для создания приложения, и в приложении у меня есть страница, содержащая список, в который вы добавляете элементы.Все отлично работает, но когда я покидаю страницу и возвращаю список исчез?Как мне сделать так, чтобы, когда я возвращаюсь на страницу, отображается список, который я сделал ранее?

package com.example.graded_unit;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;


public class Test extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        // Displays costs
        SharedPreferences sharedPref = getSharedPreferences("Expense Value", Context.MODE_PRIVATE);
        Float number = sharedPref.getFloat("Expense Value",0);
        TextView costView = findViewById(R.id.costView);
        String cost = Float.toString(number);
        costView.setText("£" + cost);

        ListView listView;

        //Creates bar at the top with title of page and back button
        getSupportActionBar().setTitle("Test List");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);


        //Assigns ListView to the list on the design page
        listView=(ListView)findViewById(R.id.listview);

        //Creates an array list for strings
        final ArrayList<String> arrayList=new ArrayList<>();

        //Creates an array adapter for the arrayList
        ArrayAdapter arrayAdapter=new ArrayAdapter(Test.this, android.R.layout.simple_list_item_1, arrayList);

        //Sets the adapter to the listView so you can view the list on the page
        listView.setAdapter(arrayAdapter);



        //Creates the button for adding a new item to the list
        FloatingActionButton addBtn = findViewById(R.id.addBtn);
        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                EditText testCost = findViewById(R.id.testCost);
                EditText testText = findViewById(R.id.testText);
                String cost = testCost.getText().toString();
                String expense = testText.getText().toString();

                //Adds expense to the list with a toast to confirm
                arrayList.add(expense + ": £" + cost);
                Toast.makeText(Test.this, "Added " + expense + ": £" + cost + " to the list!", Toast.LENGTH_SHORT).show();


                Float costs = Float.parseFloat(cost);

                //Saves the total expenses value
                SharedPreferences sharedPref = getSharedPreferences("Expense Value", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedPref.edit();
                Float test = sharedPref.getFloat("Expense Value", 0);
                costs = costs + test;
                editor.putFloat("Expense Value", costs);
                editor.apply();

                //Displays the total expenses value at the top
                TextView costView = findViewById(R.id.costView);
                String expenseValue = costs.toString();
                costView.setText("£" + expenseValue);

            }
        });

    }
}

Это код для доступа к активности

Button expensesBtn = (Button) findViewById(R.id.expensesBtn);
        expensesBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(Account.this, Test.class));
            }
        });

Для доступа кактивность со списком в нем У меня есть кнопка на другой странице, которая запускает эту деятельность.Я новичок в Java и Stack Overflow, чтобы сожалеть, если я дал слишком много кода или недостаточно.

1 Ответ

2 голосов
/ 29 апреля 2019

Вам необходимо сохранить информацию из массива и загрузить эту информацию при входе на страницу (метод onCreate)

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    .
    .
    //Load information from database/sharedpreferene/file wherever
    final ArrayList<String> arrayList = getExpensiveList();

    ArrayAdapter arrayAdapter = new ArrayAdapter(Test.this, android.R.layout.simple_list_item_1, arrayList);
    .
    .
}

Вы можете сохранять информацию каждый раз, когда добавляете новый элемент или прослушивает действие на BackButton.

    addBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            .
            .
            saveExpesiveList(arrayList);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...