【发布时间】:2019-08-15 11:35:05
【问题描述】:
我想在点击后禁用 RecyclerView 中某个项目的两个按钮。我已经实现了以下代码: How to disable button in RecyclerView and from AsyncTask
我在 POJO 类中添加了布尔值来保持按钮 (isClicked) 的状态,单击后我会更新。
@Override
public void onBindViewHolder(final NewsViewHolder holder, final int position) {
if(Fragment.List.get(holder.getAdapterPosition()).isTrueBtnClicked){
holder.btnPositive.setEnabled(false);
holder.btnPositive.setBackgroundResource(R.color.darkGray);
holder.btnNegative.setEnabled(false);
holder.btnNegative.setBackgroundResource(R.color.darkGray);
}else{
//to do
}
//used position instead getAdapterPosition()
if(BlicFragment.List.get(position).isLieBtnClicked){
holder.btnPositive.setEnabled(false);
holder.btnPositive.setBackgroundResource(R.color.darkGray);
holder.btnNegative.setEnabled(false);
holder.btnNegative.setBackgroundResource(R.color.darkGray);
}else{
//holder.btnPositive.setEnabled(false);
}
holder.btnPositive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//SendPost postingToDb = new SendPost();
//postingToDb.sendPost(sTitle, sDesc, url, sDate, sImgUrl[0], 1, 0, "Blic");
JSONPlaceHolderAPI mAPIService;
mAPIService = ApiUtils.getAPIServiceFetch();
mAPIService.getNews(url).enqueue(new Callback<Result>() {
@Override
public void onResponse(Call<Result> call, Response<Result> response) {
if(response.body().getSuccess()==1){
isPositiveBtnClicked(holder);
}else{
isPositiveBtnClicked(holder);
}
}
@Override
public void onFailure(Call<Result> call, Throwable t) {
}
});
}
});
和方法
private void isPositiveBtnClicked(NewsViewHolder holder){
Fragment.List.get(holder.getAdapterPosition()).setTrueBtnClicked(!Fragment.List.get(holder.getAdapterPosition()).isTrueBtnClicked);
notifyDataSetChanged();
Log.e("clicked positive button", String.valueOf(holder.getAdapterPosition()));
}
我正面临那个按钮被禁用,接下来的五个按钮不受影响。但是点击的每六个按钮都会被禁用。最终所有其他人都被禁用。
【问题讨论】:
标签: java android android-recyclerview state