在我的 android 项目中,我使用 SectionedRecyclerview 在 recyclerview 中创建标题。我还通过改进如下代码实现了动态添加和删除项目。
代码:
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();
}
}
我想要做的是,当 Activity 开始时,只有所有的标题应该出现,每个标题下的项目不应该出现。每当用户单击标题时,应显示该特定标题下的项目(如下拉菜单)。如果用户再次单击相同的标题,项目应该会消失。如何做到这一点?
最佳答案
请遵循可扩展部分示例 here .基本上你应该:
1) 在你的section类中添加一个 bool 标志来控制它何时展开;在您的情况下,将其默认设置为“false”,因为您不希望它最初显示项目; code here
2) 更改 getContentItemsTotal 方法以在部分未展开时返回大小 0; code here
3) 实现 setOnClickListener 来扩展你在 onBindHeaderViewHolder 中的部分; code here
关于android - SectionedRecyclerview 中 onClick 事件标题下项目的外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36932667/