Есть ли какой-нибудь возможный способ получить значение ArrayList из метода OnCllickListener и сохранить его в родительском методе? - PullRequest
0 голосов
/ 24 января 2020
 saveBtnYes.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    saveBtnYesFunc(currentYesBtnId);
                    tempActivityList =activityNames;
                    return activityNames;
                }
            });

Когда я вызываю функцию saveBtnYesFunc, она возвращает значение ArrayList с именем activityNames в поток onClick. Я хочу передать это значение из метода onClickListener его родительскому методу (этот код содержится в другом методе). Последняя строка кода return activityNames не будет работать.

Есть ли другой способ сделать это?

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Ваш вопрос не совсем понятен, я думаю, вы хотите, чтобы при нажатии Button где-то сохранялось Array (activityNames). Вы можете сделать это таким образом, если я правильно понял:

class YourClass {  //almost surely it extends Activity (or AppCompatActivity)

    private List<String> thePlaceWhereTheArrayWillBeLocated = new ArrayList<String>();  //You should define a class varibale where the result of saveBtnYesFunc will ends up (I think that the content is of String type)

    ... onCreate(...) {
    super.onCreate(savedInstanceState);
    ...
    ...
    saveBtnYes.setOnClickListener(new View.OnClickListener() {   //I don't know if it's inside the onCreate, but it could be here
            @Override
            public void onClick(View v) {
                thePlaceWhereTheArrayWillBeLocated = saveBtnYesFunc(currentYesBtnId);  //Maybe some type casts are needed
                //tempActivityList =activityNames;
                //return activityNames;    //This line is totally incorrect
            }
        });
    }

    void wheneverFunctionYouWant() {
        //do whatever you want with thePlaceWhereTheArrayWillBeLocated 
    }
}
0 голосов
/ 24 января 2020

Вам необходимо определить, кто на самом деле заинтересован в просмотре этого нового списка. Предполагая, что заинтересованная часть является экземпляром некоторого класса ListUsingClass, это должно работать.

final ListUsingClass listUser = new ListUsingClass(); // or assign to existing reference
saveBtnYes.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listUser.setActivityNames(saveBtnYesFunc(currentYesBtnId));
                 }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...