1:布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.yuekao_demo2.ForthActivity"> <ExpandableListView android:id="@+id/expanded_menu" android:layout_width="match_parent" android:layout_height="wrap_content" > </ExpandableListView> <RelativeLayout android:id="@+id/relative" android:layout_width="match_parent" android:layout_height="45dp" android:orientation="horizontal" android:layout_alignParentBottom="true" > <ImageView android:id="@+id/quanxuan_btn" android:layout_width="30dp" android:layout_height="30dp" android:background="@drawable/ic_checked" android:layout_margin="5dp" /> <TextView android:id="@+id/check_all" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="全选" android:layout_margin="10dp" android:textSize="15dp" android:textStyle="bold" android:layout_toRightOf="@+id/quanxuan_btn" /> <TextView android:id="@+id/zongjia" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="总价:" android:layout_margin="10dp" android:textSize="20dp" android:textStyle="bold" android:textColor="#000000" android:layout_toRightOf="@+id/check_all" /> <Button android:id="@+id/xiadan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/zongjia" android:layout_alignParentRight="true" android:layout_marginLeft="150dp" android:text="下单" android:textSize="23dp" android:background="@drawable/button_shape" android:textColor="#ffffff" /> </RelativeLayout> </RelativeLayout>
2:ForthActivity
public class ForthActivity extends AppCompatActivity implements IShopView{ //注入P层 ShopPresenter presenter; private ExpandableListView listView; //适配器 ExpandableAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_forth); presenter=new ShopPresenter(this); presenter.getCar(); initView(); } private void initView() { //获取资源ID listView=findViewById(R.id.expanded_menu); listView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { return true;//表示不可点击 } }); //去掉默认箭头 listView.setGroupIndicator(null); //适配器 adapter=new ExpandableAdapter(this); listView.setAdapter(adapter); } @Override public void showData(List<DataBean> dataBeans) { //添加数据 adapter.addData(dataBeans); //默认展开 adapter.expandedGroup(listView); } @Override public void showError(String error) { }
3:Expandedable适配器
public class ExpandableAdapter extends BaseExpandableListAdapter { private Context context; private List<DataBean> dataBeans; LayoutInflater inflater; public ExpandableAdapter(Context context) { this.context = context; dataBeans=new ArrayList<>(); inflater=LayoutInflater.from(context); } public void addData(List<DataBean> dataBeans) { this.dataBeans.addAll(dataBeans); notifyDataSetChanged(); } @Override public int getGroupCount() { return dataBeans.size(); } @Override public int getChildrenCount(int groupPosition) { return dataBeans.get(groupPosition).list.size(); } @Override public Object getGroup(int groupPosition) { return dataBeans.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return dataBeans.get(groupPosition).list.get(childPosition); } @Override public long getGroupId(int groupPosition) { DataBean data= (DataBean) getGroup(groupPosition); return data.sellerid; } @Override public long getChildId(int groupPosition, int childPosition) { ListBean listBean= (ListBean) getChild(groupPosition,childPosition); return listBean.pid; } @Override public boolean hasStableIds() { return true; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { SellerViewHolder holder; if(convertView==null){ convertView=inflater.inflate(R.layout.group_item_layout,parent,false); holder=new SellerViewHolder(convertView); holder.group_text=convertView.findViewById(R.id.group_text); convertView.setTag(holder); }else{ holder= (SellerViewHolder) convertView.getTag(); } DataBean dataBean= (DataBean) getGroup(groupPosition); holder.group_text.setText(dataBean.sellerName); return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ProductViewHolder holder1; if(convertView==null){ convertView=inflater.inflate(R.layout.child_item_layout,parent,false); holder1=new ProductViewHolder(convertView); holder1.image_shop=convertView.findViewById(R.id.image_shop); holder1.child_text=convertView.findViewById(R.id.child_text); holder1.child_price=convertView.findViewById(R.id.child_price); convertView.setTag(holder1); }else{ holder1= (ProductViewHolder) convertView.getTag(); } ListBean listBean= (ListBean) getChild(groupPosition, childPosition); holder1.child_text.setText(listBean.title); holder1.child_price.setText(listBean.price+""); /*holder1.image_shop.setImageResource(R.drawable.ic_launcher_background);*/ String images = listBean.images; String s = images.split("\\|")[0]; Glide.with(context).load(s).into(holder1.image_shop); return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return false; } //默认展开 public void expandedGroup(ExpandableListView listView) { for (int i = 0; i <getGroupCount(); i++) { listView.expandGroup(i); } } static class SellerViewHolder{ TextView group_text; public SellerViewHolder(View view) { group_text=view.findViewById(R.id.group_text); } } static class ProductViewHolder{ TextView child_text,child_price; ImageView image_shop; public ProductViewHolder(View view) { child_text=view.findViewById(R.id.child_text); child_price=view.findViewById(R.id.child_price); image_shop=view.findViewById(R.id.image_shop); } }