亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

單擊 RecyclerView 項目后禁用按鈕時出現問題

單擊 RecyclerView 項目后禁用按鈕時出現問題

牧羊人nacy 2023-06-08 19:17:00
單擊后,我想禁用 RecyclerView 中某些項目的兩個按鈕。我在單擊后更新的 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);? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? }我正面臨那個按鈕被禁用,接下來的五個按鈕不受影響。但是被點擊按鈕的每六個按鈕都會被禁用。最終所有其他人都被禁用。
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

是的,這正在發生,因為 Recylerview 總是重復使用或渲染從屏幕出來的屏幕視圖。因此,請確保您應該完全將視圖恢復正常,就像在某些情況下視圖正在更改以使用某些條件啟用狀態那么必須if()有else使它們禁用的部分。例如在你的情況下......


        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{

            holder.btnPositive.setEnabled(true);

            holder.btnPositive.setBackgroundResource(R.color.greenEnable);

            holder.btnNegative.setEnabled(true);

            holder.btnNegative.setBackgroundResource(R.color.greenEnable);

        }


查看完整回答
反對 回復 2023-06-08
  • 1 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號