2

私のAndroidプロジェクトでは、SectionedRecyclerview を使用してrecyclerviewでヘッダーを作成しています。また、以下のようなコードを改善して項目を動的に追加したり削除したりすることもできました。SectionedRecyclerviewのonClickイベントのヘッダーにある項目の外観

CODE:

 public class MyadapterNew extends StatelessSection { 

ArrayList<String> data; 

ArrayList<String> Hdata; 

public MyadapterNew(int headerResourceId, int itemResourceId,ArrayList<String>data,ArrayList<String> hdata;) { 
    super(headerResourceId, itemResourceId); 
    this.data = data; 
    this.Hdata=hdata; 
} 


class HeaderViewHolder extends RecyclerView.ViewHolder { 


    TextView header; 
    public HeaderViewHolder(View view) { 
     super(view); 

     header = (TextView)view.findViewById(R.id.header); 

    } 
} 

class MyItemViewHolder extends RecyclerView.ViewHolder { 

    private TextView filename; 



    public MyItemViewHolder(View itemView) { 
     super(itemView); 
     filename = (TextView) itemView.findViewById(R.id.filename); 


    } 
} 

public void addItem(int position, String item) { 
    this.data.add(position,item); 
} 

public void removeItem(int position) { 
    this.data.remove(position); 
} 


@Override 
public RecyclerView.ViewHolder getItemViewHolder(View view) { 
    return new MyItemViewHolder(view); 
} 
@Override 
public RecyclerView.ViewHolder getHeaderViewHolder(View view) { 
    return new HeaderViewHolder(view); 
} 



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

    MyItemViewHolder itemHolder = (MyItemViewHolder) holder; 
    itemHolder.filename.setText(data.get(position)); 


} 

@Override 
public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) { 
    super.onBindHeaderViewHolder(holder); 
    HeaderViewHolder headerHolder = (HeaderViewHolder) holder; 
    headerHolder.Header.setText(Hdata.get(0)); 

} 

@Override 
public int getContentItemsTotal() { 
    return data.size(); 

} 
} 

私が何をしたいのか、唯一のすべてのヘッダーは、活動の開始時に、各ヘッダーの下の項目は表示されません表示されますされています。ユーザーがヘッダーをクリックするたびに、その特定のヘッダーの下にある項目が表示されます(ドロップダウンなど)。ユーザーが同じヘッダーを再度クリックすると、項目は消えます。これを達成する方法は?

答えて

0

拡張可能セクションの例hereに従ってください。基本的には次のようにします:

1)セクションクラスにブールフラグを追加して、拡張時の制御を行います。あなたが最初にアイテムを表示しないように、あなたのケースではデフォルトで「false」に設定してください。 code here

2)セクションが展開されていないときにgetContentItemsTotalメソッドを変更してサイズ0を返す。 code here

3)onBindHeaderViewHolderでセクションを拡張するためにsetOnClickListenerを実装します。 code here

+0

ありがとうございました。私のプロジェクトでは、複数のヘッダーがあります。各ヘッダーには同じ数の項目がありません。各ヘッダーの項目を挿入する方法は? – Naroju

+0

MyAdapterNewクラスのメソッドaddItemとremoveItemがあり、それらを呼び出すだけです:)また、データのリストをコンストラクタに渡すので、MyadapterNewのインスタンスごとに異なるデータリストを渡すだけです – Gustavo

+0

ありがとう、ありがとうございます。この問題を見てください[http://stackoverflow.com/questions/36956323/sectionedrecyclerview-could-not-create-new-header-dynamically] – Naroju

関連する問題