CallbackStill работает для добавления модели, но RecyclerView уже создан - AndroidX - PullRequest
0 голосов
/ 18 января 2020

У меня есть функция AllInstalledApp, чтобы получить все установленное приложение, и внутри него я установил обратный вызов для проверки обновленного приложения, выполнение которого занимает 1-2 секунды. И обратный вызов имеет функцию «For», поэтому функция «For» уже завершена, и обратный вызов все еще продолжается, чтобы получить данные, когда я устанавливаю RecyclerView ниже функции AllInstalledApp, он пуст, потому что представление рециркулятора уже создано, и Модель все еще продолжает добавление обновленного приложения

#

В заключение, CallbackStill работает для добавления модели, но RecyclerView уже создан, и он становится пустым

// OnCreate

MyAppsInstalledApps(false);
RecyclerViewSet();

// MyAppInstalledApps function

private void MyAppsInstalledApps(boolean getSysPackages) {
    List<PackageInfo> packs = getActivity().getPackageManager().getInstalledPackages(0);
    for(int i=0;i<packs.size();i++) {
        final PackageInfo p = packs.get(i);
        if ((!getSysPackages) && (p.versionName == null)) {
            continue ;
        }
        if(!p.packageName.contains("com.samsung") && !p.packageName.contains("com.android") && !p.packageName.contains("com.sec") && !p.packageName.contains("com.google")) {

            //Game
            if(packageIsGame(getActivity(), p.packageName) == true){
                PackageManager getPackageManager = getActivity().getPackageManager();
                Resources res = null;
                try {
                    res = getPackageManager.getResourcesForApplication(p.applicationInfo);
                } catch (PackageManager.NameNotFoundException e) {
                    e.printStackTrace();
                }
                final Drawable drawable = res.getDrawable(p.applicationInfo.icon);



                CheckAppUpdateCall(new OnTestingCBListener() {
                    @Override
                    public void onSuccessCB(String ResultValue) {
                        //THIS
                        int UpdateAvailable = Integer.parseInt(ResultValue);
                        ModelGameAppAdding(p.applicationInfo.loadLabel(getActivity().getPackageManager()).toString(), p.packageName, p.versionName, p.versionCode, drawable, UpdateAvailable);
                    }
                }, p.packageName, p.versionName);

            }

        }

    }

// CheckAppUpdateFunction

OnTestingCBListener onTestingCBListener;
public void CheckAppUpdateCall(final OnTestingCBListener onSelectListener, final String xpackagename, String yversionname){

    final String apppackagenamex = xpackagename;
    final String appversionnamex = yversionname;

    new GooglePlayAppVersion(apppackagenamex, new GooglePlayAppVersion.Listener() {
        @Override
        public void result(String version) {
            Toast.makeText(getActivity(), "Latest Version:" + version, Toast.LENGTH_SHORT).show();

            if(version != null && !version.isEmpty() && !version.equals("null")){
                if(!version.equals("Varies with device")) {
                    onTestingCBListener = onSelectListener;

                    if (compareVersion(appversionnamex, version) == true) {
                        onTestingCBListener.onSuccessCB("0");
                        Toast.makeText(getActivity(), "This is the latest version!", Toast.LENGTH_SHORT).show();
                    } else if (compareVersion(appversionnamex, version) == false) {
                        //THIRD
                        onTestingCBListener.onSuccessCB("1");
                        Toast.makeText(getActivity(), "There has an update for this app!", Toast.LENGTH_SHORT).show();

                    }
                }
            }

        }
    }).execute();


}

// ModelGameAppAdding

private void ModelGameAppAdding(String appName, String packageName, String versionName, int versionCode, Drawable drawable, int UpdateAvailable){
    modelMyAppsInstalledApps.add(new ModelMyAppsInstalledApps(appName, packageName, versionName, versionCode, drawable, UpdateAvailable));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...