【发布时间】:2019-12-15 06:07:11
【问题描述】:
我试图在 RecyclerView 从 Retrofit 响应中单击后禁用按钮。
应用程序正在使用 RecyclerView 填充列表,而我正在使用 Retrofit 与后端 REST API 通信。一项内有两个按钮,点击即可激活 Retrofit 客户端。如果来自 API 的响应成功,则应禁用按钮。我遇到了两个问题: 前几个项目工作得很好,但是在我从未点击过的几个滚动按钮之后也被禁用; 其次是列表中的几个随机按钮仍然可以点击。
public void onBindViewHolder(final NewsViewHolder holder, int position) {
holder.btnPositive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// init Retrofit Client
JSONPlaceHolderAPI mAPIService;
mAPIService = ApiUtils.getAPIServiceFetch();
mAPIService.getNews(url).enqueue(new Callback<Result>() {
@Override
public void onResponse(Call<Result> call, Response<Result>
response) {
holder.btnPositive.setVisibility(View.GONE);
}
}
@Override
public void onFailure(Call<Result> call, Throwable t) {
// do code
}
});
}
});
holder.btnNegative.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
JSONPlaceHolderAPI mAPIService;
mAPIService = ApiUtils.getAPIServiceFetch();
mAPIService.getNews(url).enqueue(new Callback<Result>() {
@Override
public void onResponse(Call<Result> call, Response<Result>
response) {
holder.btnNegative.setEnabled(false);
}
}
@Override
public void onFailure(Call<Result> call, Throwable t) {
// do code
}
});
}
});
}
我想问题出在 Retrofit 的某个地方,它使用后台线程或 AsyncTask。
【问题讨论】:
标签: java android button android-recyclerview android-asynctask