我正在尝试通过 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/