java - 可扩展 ListView 中的 Android AsyncTask .get 方法

标签 java android

我正在尝试通过 asynctask 设置的值在 android 的 ExpandableListView 中禁用 setOnGroupClickListener

        expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
        @Override
        public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) {

            try {
                new checkProgressValue().execute(i).get(3000,TimeUnit.MILLISECONDS);
            } catch (Exception e) {
                e.printStackTrace();
            }

            Log.i("ResultPermission", String.valueOf(permission));

            if (permission.equals(false)) {
                return false;
            }
            else {
                return true; 
            }
        }
    });

异步任务代码:

public class checkProgressValue extends AsyncTask<Integer, Void, Void> {
    @Override
    protected Void doInBackground(Integer... voids) {

        Call<DefaultResponse> call = RetrofitClient.getInstance().getApi()
                .checkQuizTopicForAttempt(user.getId(), topicList.get(voids[0]).getCourse_id());

        final int temp = voids[0];
        call.enqueue(new Callback<DefaultResponse>() {
            @Override
            public void onResponse(Call<DefaultResponse> call, Response<DefaultResponse> response) {
                try {
                    if (response.body().getMessage() == null) {
                        progressValue = 0;
                    } else {
                        progressValue = Integer.parseInt(response.body().getMessage());
                    }
                    if (progressValue == 0 ) {
                        permission = false;
                    } else {
                        Toast.makeText(getActivity().getApplicationContext(),
                                "Lock", Toast.LENGTH_SHORT).show();
                        permission = true;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                Log.i("Permission", String.valueOf(permission));
            }

            @Override
            public void onFailure(Call<DefaultResponse> call, Throwable t) {

                Toast.makeText(getActivity().getApplicationContext(), t.getMessage(), Toast.LENGTH_LONG).show();
                permission = true;
                Log.i("Permission", String.valueOf(permission));
            }
        });
        return null;
    }
}

程序不会在 execute(i).get() 方法处等待,并且始终返回 true。该方法中的 Log.i 打印权限 true,而在 AsyncTask 中打印 false。 我没明白我错在哪里。或者有什么方法可以在 PostExecute 方法中处理 onClick 吗?

最佳答案

只需在onResponse中调用此函数:

expandableListView.expandGroup(positionOfGroup);

关于java - 可扩展 ListView 中的 Android AsyncTask .get 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57803618/

相关文章:

android - 程序类型已经存在 : com. google.android.gms.common.util.VisibleForTesting -':app:transformDexArchiveWithExternalLibsDexMergerForDebug'

android - ListView 总是删除最后一项

android - Android Studio 0.211不再支持签名APK

android - fragment 相互重叠......并且前一个 fragment 正在点击

java - eclipselink 和 jpa : select id association with left join return "0" instead null

java - Maven 不生成 javadoc 作为站点的一部分

java - 无法让 String.split() 在 android 上按预期工作

java - ClassNotFoundException JSP

java - 如何加快 Camel 路线

java - Android studio Java 循环更新文本