第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

更改RecyclerView所有項目的View可見性

更改RecyclerView所有項目的View可見性

森林海 2023-06-21 15:04:35
我有一個 RecyclerView,它在單擊某些項目時播放錄音。我希望當(dāng)用戶單擊正在播放特定錄音的 item1 時的行為,并且按鈕視圖發(fā)生更改,這工作正常。但同時,當(dāng) item1 錄音正在播放并且用戶單擊 item2 時,item1 行按鈕將返回到其原始位置。下圖顯示了單擊 item1(第 1 行)時的視圖。(這工作正常)我還測試了它以控制 inBindViewHolder 方法中的視圖。但它不起作用,因為每當(dāng)我單擊 holder 對象時,僅控制當(dāng)前選定行的視圖。下面的代碼部分放在 ViewHolder 中mPlayAudio.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view)                 {                    Log.d(TAG, "onClick: Present in onClick mPlayAudio");                    if (listener != null)                     {                        final int position = getAdapterPosition();                        if (position != RecyclerView.NO_POSITION)                         {                           // This section contain the code to play and stop                               the audio                          // Using below line I only able to change selected                           // row button View not other row Button View                            mPlayAudio.setImageResource(R.drawable.play);                          }                     }                 }});我也在 onBindViewHolder 方法中嘗試過此操作,但仍然不起作用。下面的代碼添加到onBindViewHolder中holder.mPlayAudio.setOnClickListener(new View.OnClickListener(){            @Override            public void onClick(View view)             {               // This section contain code to play and stop audio               //Using below statement I only able to change the               //visibility of current selected row View not others               holder.mPlayAudio.setImageResource(R.drawable.play);            }}
查看完整描述

1 回答

?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗 獲得超6個贊

所以我終于能夠在自己的項目中嘗試這一點。


回答 在 BindViewHolder 中,單擊某個項目后,保存該項目的位置值。然后在單擊事件中調(diào)用notifyDataSetChanged,這將刷新適配器。現(xiàn)在它獲取您的結(jié)果,BindViewHolder 內(nèi)部有一個 if 語句檢查該值是否應(yīng)相應(yīng)設(shè)置(或不可見),否則顯示為可見。


示例代碼


public class SelectorAdapter extends RecyclerView.Adapter<SelectorAdapter.ItemHolder> implements View.OnClickListener {


private List itemList;

private int selectedKey;


public SelectorAdapter(List list) {

    itemList = list;

}


@Override

public void onClick(View v) {


}



/* ViewHolder for each item */

class ItemHolder extends RecyclerView.ViewHolder {


    //title

    @BindView(R.id.selector_title)

    TextView title;


    @BindView(R.id.selector_layout)

    LinearLayout selector;


    ItemHolder(View itemView) {

        super(itemView);

        ButterKnife.bind(this, itemView);


    }

}



@Override

public ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View itemView = LayoutInflater.from(parent.getContext())

            .inflate(R.layout.item_layout_selector, parent, false);


    return new ItemHolder(itemView);

}



@Override

public void onBindViewHolder(ItemHolder holder, int position) {


    String title = (String) itemList.get(position);


    holder.title.setText(title);


    if (position != selectedKey) {

        holder.title.setBackgroundResource(R.drawable.selector);

    } else {

        holder.title.setBackgroundResource(R.drawable.selector_selected);

    }



    holder.itemView.setOnClickListener(v -> {

        Timber.e("selected item: %s", position);

        selectedKey = position;

        notifyDataSetChanged();

    });


}



@Override

public int getItemCount() {

    Timber.e("itemCount: %s", itemList.size());

    return itemList.size();

}



}

這是我自己的項目,當(dāng)我選擇一個項目時,它會將背景資源更改為選定狀態(tài),然后其余部分返回到默認(rèn)狀態(tài)。


查看完整回答
反對 回復(fù) 2023-06-21
  • 1 回答
  • 0 關(guān)注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號