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()。