第一步:.xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
//RecyclerView
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_business"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="#FFB6C1"
android:layout_weight="1">
</android.support.v7.widget.RecyclerView>
//底部结算--全选--小计
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
//全选
<CheckBox
android:id="@+id/ck_all"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="全选"/>
//总计
<TextView
android:id="@+id/tv_count"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="总计:0元"/>
//结算按钮
<Button
android:id="@+id/btn_price"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#f00"
android:text="结算"/>
</LinearLayout>
</LinearLayout>
如下图所示
图中的RecyclerView(rv_business)用来存放我们的第一级数据–商家条目
第二步:MainActivity.java中
public class ShouyeFragment extends Fragment implements Contract_Shopping.View_Interface_Shopping {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate( R.layout.fragment_shouye, container, false );
rv_business = view.findViewById( R.id.rv_business );
ck_all = view.findViewById( R.id.ck_all );
//新建P层
presenter_shopping = (Contract_Shopping.Presenter_Interface_Shopping) new Presenter_Shopping();
//绑定
presenter_shopping.attahViewShopping( this );
//交互
presenter_shopping.requestDataShopping();
return view;
}
@Override
//刷新展示数据
public void showDataShopping(final String message) {
getActivity().runOnUiThread( new Runnable() {
@Override
public void run() {
//解析数据--message
Gson gson = new Gson();
Shopping_Bean shoppingBean = gson.fromJson( message, Shopping_Bean.class );
final List<Shopping_Bean.DataBean> data = shoppingBean.getData();
//设置布局管理器
LinearLayoutManager manager = new LinearLayoutManager( getContext(), LinearLayoutManager.VERTICAL, false );
rv_business.setLayoutManager( manager );
//设置适配器
businessAdapter = new BusinessAdapter(R.layout.recycle_business,data);
rv_business.setAdapter( businessAdapter );
//全选反选
ck_all.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < data.size(); i++) {
data.get( i ).setBusinessChecked( ck_all.isChecked() );
for (int j = 0; j < data.get( i ).getList().size(); j++) {
data.get( i ).getList().get( j ).setGoodsChecked( ck_all.isChecked() );
}
}
businessAdapter.notifyDataSetChanged();
}
} );
}
} );
}
}
}
recycle_business布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/ck_business"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_business_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="店名"/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_goods"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
如下图所示
图中的rv_goods用来存放商家下商品的信息
BusinessAdapter适配器
在适配器中完成子商品的展示
public class BusinessAdapter extends BaseQuickAdapter<Shopping_Bean.DataBean,BaseViewHolder> {
public BusinessAdapter(int layoutResId, @Nullable List<Shopping_Bean.DataBean> data) {
super( layoutResId, data );
}
@Override
protected void convert(BaseViewHolder helper, Shopping_Bean.DataBean item) {
//设置商家的名称
helper.setText( R.id.tv_business_name,item.getSellerName() );
//设置商家下子商品的条目
RecyclerView rv_goods = helper.getView( R.id.rv_goods );
//子商品的数据源--item下的list
List<Shopping_Bean.DataBean.ListBean> goodslist = item.getList();
//布局管理器
LinearLayoutManager manager = new LinearLayoutManager( mContext, LinearLayoutManager.VERTICAL, false );
//适配器
GoodsAdapter goodsAdapter = new GoodsAdapter(R.layout.recycle_goods,goodslist);
rv_goods.setLayoutManager( manager );
rv_goods.setAdapter( goodsAdapter );
}
}