Как добавить новые данные в список массивов через намерения - PullRequest
1 голос
/ 22 января 2020

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

Теперь моя проблема заключается в том, что я передаю данные в массиве между действиями через INTENT, чтобы затем данные отображались в виде списка

Теперь я борюсь с тем, что каждый раз, когда я хочу добавить НОВЫЕ данные в массив, массив возвращается к пустым значениям, а затем отображает только новые данные

Таким образом, в основном вы добавляете данные члена персонала в массив , он переходит к другому действию и передает этот массив через намерение и отображает в ListView

Но он отображает только новые данные в массиве

Чего я хочу добиться, так это того, что старые данные в массиве не должно исчезать и новые данные должны быть просто добавлены в массив и не создавать новый массив, отображающий старые и новые данные

код действия 1

Это передает данные другому действию, а также начинает другое действие

      AddStaff.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    MemberBudgetPassData= MemberBudget.getText().toString();
                    BudgetHoursPassData = budgetHours.getText().toString();

                    StaffList = Client + Rates + Staff + BudgetHoursPassData + MemberBudgetPassData;
                    StaffArray.add(StaffList);

                    PassData();


                    }



            });
 public  void PassData(){
        Intent GoToReport=new Intent(getApplicationContext(), createProject.class);
        MemberBudgetPassData= MemberBudget.getText().toString();
        BudgetHoursPassData = budgetHours.getText().toString();
        Toasty.info(popupActivity.this, StaffArray.toString(),Toasty.LENGTH_LONG).show();

        GoToReport.putStringArrayListExtra("Array",StaffArray);




       startActivity(GoToReport);

            Animatoo.animateCard(popupActivity.this);

    }

Упражнение 2

Здесь это возвращает t он данные и отображает его в виде списка

Array = new ArrayList<>();
    Array = getIntent().getStringArrayListExtra("Array");



   final ArrayAdapter arrayAdapter =new ArrayAdapter<>
                (this, android.R.layout.simple_list_item_1, Array);
        if (Array == null)
        {
            Toasty.info(createProject.this,"Select a Staff Memebr",Toasty.LENGTH_LONG).show();
        }
        else
        {
            StaffListView.setAdapter(arrayAdapter);
        }

1 Ответ

1 голос
/ 22 января 2020

Я использую библиотеку Gson, как в этой ситуации. Во-первых, вы должны использовать класс модели, а затем передать класс модели или объект Arraylist как String. Например;

Упражнение 1

public  void PassData(){
    Intent GoToReport=new Intent(getApplicationContext(), createProject.class);
    MemberBudgetPassData= MemberBudget.getText().toString();
    BudgetHoursPassData = budgetHours.getText().toString();
    Toasty.info(popupActivity.this, StaffArray.toString(),Toasty.LENGTH_LONG).show();


    GoToReport.putString("Array",new Gson.toJson(StaffArray));

    startActivity(GoToReport);
    Animatoo.animateCard(popupActivity.this);
}

Упражнение 2

Type listType = new TypeToken<ArrayList<StaffArray>>(){}.getType();
Array = new ArrayList<>();
Array = new Gson.fromJson(getIntent().getString("Array", listType));

final ArrayAdapter arrayAdapter =new ArrayAdapter<>
                (this, android.R.layout.simple_list_item_1, Array);
    if (Array == null)
    {
        Toasty.info(createProject.this,"Select a Staff Memebr",Toasty.LENGTH_LONG).show();
    }
    else
    {
        StaffListView.setAdapter(arrayAdapter);
    }

Наконец, не забудьте добавить библиотеку Gson в файл Gradle.

implementation 'com.google.code.gson:gson:2.8.6'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...