簡體   English   中英

如何獲得對recyclerview中其他項目的控制?

[英]How to get control to other item in recyclerview?

我有一個水平的recyclerView ,當我單擊每個元素時,它里面的LinearLayout setVisibility(VISIBLE)可以正常工作。

所以,現在我想要的是,當我單擊當前項目時,同時單擊LinearLayout setVisibilty(VISIBLE) (通常),如果我之前單擊了另一個項目,則其中的LinearLayoutsetVisibility(GONE)

到目前為止我嘗試過的

 viewHolder.container.setOnClickListener(new View.OnClickListener() {
  @Override
   public void onClick(View v) {
   if(viewHolder.linearLayout.getVisibility() == View.VISIBLE){
        //hide
        viewHolder.linearLayout.setVisibility(View.GONE);
    }else{
        int nowClickedId = 0;
        //hide LinearLayout of other position that clicked before
        if(nowClickedId !=  position){
            viewHolder.linearLayout.setVisibility(View.GONE);
        }

         //show for current clicked item
          viewHolder.linearLayout.setVisibility(View.VISIBLE);

         //get current item position store at the array
          nowClickedId = viewHolder.getAdapterPosition();
        }
    }
});

到目前為止,我只對當前位置的項目具有控制權,如何才能獲得對先前單擊項目的控制?

創建一個變量來存儲單擊的項目的位置,並全局聲明它。

private int nowclicked=-1;

現在,只要單擊位置,便會在您的視圖保持器內部將其存儲到全局變量,並調用notifyDataSetChanged()來通知適配器數據已更改。

private class Sample extends RecyclerView.ViewHolder{

    public Sample(View itemView) {
        super(itemView);

        viewHolder.container.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                nowclicked = getAdapterPosition();
                notifyDataSetChanged();

            }
        });
    }
}

onBindViewHolder如果擴散相等,則顯示linearLayout否則將其隱藏。

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

  if(nowclicked==position){
      viewHolder.linearLayout.setVisibility(View.VISIBLE);
  }else {
      viewHolder.linearLayout.setVisibility(View.GONE);
  }
}

嘗試在onBindViewHolder()方法中編寫此代碼,並確保編寫

holder.viewHolder.container.setOnClickListener();

根據職位,您可以做任何您想做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM