私の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();
}
}
私が何をしたいのか、唯一のすべてのヘッダーは、活動の開始時に、各ヘッダーの下の項目は表示されません表示されますされています。ユーザーがヘッダーをクリックするたびに、その特定のヘッダーの下にある項目が表示されます(ドロップダウンなど)。ユーザーが同じヘッダーを再度クリックすると、項目は消えます。これを達成する方法は?
ありがとうございました。私のプロジェクトでは、複数のヘッダーがあります。各ヘッダーには同じ数の項目がありません。各ヘッダーの項目を挿入する方法は? – Naroju
MyAdapterNewクラスのメソッドaddItemとremoveItemがあり、それらを呼び出すだけです:)また、データのリストをコンストラクタに渡すので、MyadapterNewのインスタンスごとに異なるデータリストを渡すだけです – Gustavo
ありがとう、ありがとうございます。この問題を見てください[http://stackoverflow.com/questions/36956323/sectionedrecyclerview-could-not-create-new-header-dynamically] – Naroju