Java Android AsyncTask.get方法在可展开列表视图中

Java Android AsyncTask.get方法在可展开列表视图中,java,android,Java,Android,我试图通过asynctask设置的值在android中禁用ExpandableListView中的setOnGroupClickListener expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView expan

我试图通过
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;
    }
}
公共类checkProgressValue扩展异步任务{
@凌驾
受保护的Void doInBackground(整数…Void){
Call Call=client.getInstance().getApi()
.checkquiztopicforattest(user.getId(),topicList.get(voids[0]).getCourse_id());
最终内部温度=空隙[0];
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
试一试{
if(response.body().getMessage()==null){
progressValue=0;
}否则{
progressValue=Integer.parseInt(response.body().getMessage());
}
如果(progressValue==0){
许可=假;
}否则{
Toast.makeText(getActivity().getApplicationContext(),
“Lock”,Toast.LENGTH_SHORT.show();
许可=真;
}
}捕获(例外e){
e、 printStackTrace();
}
Log.i(“权限”,String.valueOf(权限));
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Toast.makeText(getActivity().getApplicationContext(),t.getMessage(),Toast.LENGTH_LONG).show();
许可=真;
Log.i(“权限”,String.valueOf(权限));
}
});
返回null;
}
}
程序不会在
execute(i).get()
方法处等待,并始终返回true。此方法中的Log.i打印权限为true,而处于
AsyncTask
print false。
我没有理解错的地方。或者是否有任何方法可以在
PostExecute
方法中处理
onClick

expandableListView.expandGroup(positionOfGroup);

checkProgressValue
code-posted@lakhwindersinght更新操作已经是异步的,因此
enqueue()
方法立即返回。对
AsyncTask
使用
get()。