При добавлении значений в Arraylist из одного класса в другой Listview не отображает обновленные значения - PullRequest
0 голосов
/ 25 мая 2020

У меня есть один список массивов в классе A и два текстовых поля: одно из класса A, а другое из класса B,
При добавлении значений в список массивов через текстовое поле класса A он отлично работает для меня,

и при попытке добавить из текстового поля класса B он добавляется в список массивов , но не отображает обновленный список в списке (пусто)
Ниже приведен код, который я пробовал до сих пор

Класс-A: -

public static ArrayList<String> arrayList = new ArrayList<>();
    ArrayAdapter<String> arrayAdapter;
    ListView listView;
    EditText quickTask;
    Button addButton;
    Button moreButton;

    public static ArrayList<String> addToList( String i ) {
        arrayList.add(i);
        return arrayList;
    }

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

        quickTask = (EditText) findViewById(R.id.quicktaskeditText);
        listView = (ListView) findViewById(R.id.TasksListView);
        arrayAdapter = new ArrayAdapter<String>(ClassA.this, android.R.layout.simple_list_item_1,arrayList);

        addButton = (Button) findViewById(R.id.Addbutton);

        addButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String task = quickTask.getText().toString();
                arrayList.add(task);
                listView.setAdapter(arrayAdapter);
                arrayAdapter.notifyDataSetChanged();
            }
        });
    moreButton = (Button) findViewById(R.id.moreButton);

    moreButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent secondActIntent = new Intent(getApplicationContext(),ClassB.class);
            startActivity(secondActIntent);
        }
    });
}

Класс-B: -

    EditText Title;
    Button AddButton;
    ArrayList<String> alist;

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

        Title = (EditText) findViewById(R.id.Title);
        AddButton = (Button) findViewById(R.id.secondAddButton);

        AddButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String task = Title.getText().toString();
                //Adding text to Class-A arraylist
                alist = ClassA.addToList(task);
                Intent startIntent = new Intent(getApplicationContext(),ClassA.class);
               startActivity(startIntent);
            }
        });
    }

1 Ответ

2 голосов
/ 25 мая 2020

Поскольку вы не уведомляете ListView об изменении содержимого ArrayList.

У вас есть notifyDataSetChanged только в прослушивателе кнопок. Вам нужно добавить его в Class-A#onResume или addTolist.

...