public class MainActivity extends AppCompatActivity {
private RecyclerView rc;
private List<Data> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setData();
rc= (RecyclerView) findViewById(R.id.rc);
LinearLayoutManager manager=new LinearLayoutManager(this);
MyAdapter adapter=new MyAdapter(this,list,rc);
rc.setLayoutManager(manager);
rc.setAdapter(adapter);
}
public void setData(){
list=new ArrayList<Data>();
for(int i=0;i<30;i++){
Data data=new Data();
list.add(data);
}
for(int j=0;j<3;j++){
Data data=list.get(j);
data.setTag("第一组");
data.setContent("111111");
}
for(int j=3;j<6;j++){
Data data=list.get(j);
data.setTag("第二组");
data.setContent("222222");
}
for(int j=6;j<9;j++){
Data data=list.get(j);
data.setTag("第三组");
data.setContent("3333");
}
for(int j=9;j<12;j++){
Data data=list.get(j);
data.setTag("第四组");
data.setContent("444444");
}
for(int j=12;j<15;j++){
Data data=list.get(j);
data.setTag("第五组");
data.setContent("55555");
}
for(int j=15;j<18;j++){
Data data=list.get(j);
data.setTag("第六组");
data.setContent("66666");
}
for(int j=18;j<21;j++){
Data data=list.get(j);
data.setTag("第七组");
data.setContent("77777");
}
for(int j=21;j<24;j++){
Data data=list.get(j);
data.setTag("第八组");
data.setContent("88888");
}
for(int j=24;j<27;j++){
Data data=list.get(j);
data.setTag("第九组");
data.setContent("99999");
}
for(int j=27;j<30;j++){
Data data=list.get(j);
data.setTag("第十组");
data.setContent("0000000");
}
}
class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHodler>{
private RecyclerView rc;
private Context context;
private List<Data> list;
private int title_type=0;
private int content_type=1;
public MyAdapter(Context context,List<Data> list,RecyclerView rc){
this.context=context;
this.list=list;
this.rc=rc;
}
@Override
public int getItemViewType(int position) {
Data oldC = null;
if (position > 0) {
oldC = list.get(position - 1);
}
Data shopC = list.get(position);
if (oldC != null) {
if (shopC.getTag().equals(oldC.getTag())) {
return content_type;
} else {
return title_type;
}
} else {
return title_type;
}
}
@Override
public MyHodler onCreateViewHolder(ViewGroup parent, int viewType) {
View v= LayoutInflater.from(context).inflate(R.layout.layout_item,parent,false);
MyHodler hodler=new MyHodler(v);
return hodler;
}
@Override
public void onBindViewHolder(final MyHodler holder, final int position) {
//item 是否显示标题
final int type=getItemViewType(position);
if(type==0){//显示标题
holder.layout.setVisibility(View.VISIBLE);
}else{//不显示标题
holder.layout.setVisibility(View.GONE);
}
//判断item是否需要显示
if(list.get(position).getIsShow()==true){
holder.tvContent.setVisibility(View.VISIBLE);
}else{
holder.tvContent.setVisibility(View.GONE);
}
holder.tvTitle.setText(list.get(position).getTag());
holder.tvContent.setText(list.get(position).getContent());
holder.bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tag=list.get(position).getTag();
for(int i=position;i<list.size();i++){
if(!list.get(i).getTag().equals(tag))
return;
MyAdapter.MyHodler holder= (MyHodler) rc.findViewHolderForAdapterPosition(i);
if(list.get(i).getIsShow()){
list.get(i).setIsShow(false);
if(holder!=null)
holder.tvContent.setVisibility(View.GONE);
}else {
list.get(i).setIsShow(true);
if (holder != null)
holder.tvContent.setVisibility(View.VISIBLE);
}
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
class MyHodler extends RecyclerView.ViewHolder{
public TextView tvTitle,tvContent;
public Button bt;
public LinearLayout layout;
public MyHodler(View itemView) {
super(itemView);
tvTitle= (TextView) itemView.findViewById(R.id.title);
bt= (Button) itemView.findViewById(R.id.bt);
tvContent= (TextView) itemView.findViewById(R.id.tv_content);
layout= (LinearLayout) itemView.findViewById(R.id.layout);
}
}
}
}
“`