2017-12-27 16 views
1

開始時に、子要素の可視性がなくなったヘッダー要素と子要素を持つリサイクルビューがあります。私はヘッダー要素をクリックしたときに、その位置の子要素がゼロであると見なすことができます。私が直面している唯一の問題は、同じ位置を再びクリックしたときに同じビューを崩壊させたいということです。ロジックonBingViewHolderリサイクルビューのレイアウトを折り畳む

マイリサイクルビューは以下の通りである: - 高度で

holder.doc_type.setText(docDatalist.get(position).getDocTypeDesc()); 

    if (position == expandedPosition) 
    { 
      holder.recyclerViewImages.setVisibility(View.VISIBLE); 
      imagerequestserver(docDatalist.get(expandedPosition), vinappserial, holder); 
      holder.iconexpandCollapse.setImageResource(R.mipmap.expand_4); 
     } 


    else { 
     holder.recyclerViewImages.setVisibility(View.GONE); 
     holder.iconexpandCollapse.setImageResource(R.mipmap.expand); 

    } 
    holder.myDocumentListCollapse.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View view) { 



      if (expandedPosition >= 0) { 

        int prev = expandedPosition; 
        holder.recyclerViewImages.setVisibility(View.VISIBLE); 
       notifyItemChanged(prev); 

      }else { 
       expandedPosition = holder.getAdapterPosition(); 
       notifyItemChanged(expandedPosition); 
      } 
     } 

    }); 

感謝。

+1

の中に通知するように管理しますこれを実装するには、['SparseBooleanArray'](https://developer.android.com/reference/an droid/util/SparseBooleanArray.html)。ロジックは、アイテムが展開されるたびにアイテムの位置を取得し、それを使ってSparseBooleanArray内のブール値** true **を作成し、折り畳み状態用の** false **を作成するということです。 –

+0

どこでも使用されている 'shouldExpand'は表示されません... – Belladonna

+0

@Belladonna申し訳ありません、私はそれを忘れてしまいます。 – Champandorid

答えて

0

clickedされた位置配列を手動で追加してから、viewHolderでその位置を確認した後に追加する必要があります。

リスナーをクリックしてイベントをクリックしてヘッダー上の適切な位置を追加し、削除し、あなたのコンストラクタで

positionSet = new ArrayList<>(); 

を崩壊位置リストを提供します

public void onClick(View view) { 


       int position = getAdapterPosition(); 
       if(positionSet.contains(position)){ 

        positionSet.remove((Integer)position); 
       }else { 
        positionSet.add(position); 
       } 
       notifyDataSetChanged(); 
      } 
     } 

は、私が提案するonBindViewHolder

if(positionSet.contains(position)){ 
     //visible 
    }else { 
     //gone 
    } 
+0

私はあなたが私の要点を得ていないと思う。 – Champandorid

+0

あなたはどこから拡張されていますか? –

関連する問題