接上文
MVP
第二个页面的mvp
ShoppingModel
public class ShoppingModel {
public void shop(String url, final OKHttpTwo.HttpCallBack httpCallBack){
OKHttpTwo okHttpTwo = new OKHttpTwo();
okHttpTwo.shop(url, new OKHttpTwo.HttpCallBack() {
@Override
public void setData(String s) {
Gson gson = new Gson();
Phone phone = gson.fromJson(s, Phone.class);
List<Phone.DataBean> data = phone.getData();
httpCallBack.getData(data);
}
@Override
public void getData(List<Phone.DataBean> list) {
}
});
}
}
ShoppingView
public interface ShoppingView {
void onData(List<Phone.DataBean> list);
}
ShoppingPersenter
public class ShoppingPersenter {
private ShoppingView shoppingView;
private ShoppingModel shoppingModel;
public ShoppingPersenter(ShoppingView shoppingView) {
this.shoppingView = shoppingView;
shoppingModel = new ShoppingModel();
}
public void shop(String url){
shoppingModel.shop(url, new OKHttpTwo.HttpCallBack() {
@Override
public void setData(String s) {
}
@Override
public void getData(List<Phone.DataBean> list) {
shoppingView.onData(list);
}
});
}
}
Adapter
第二个页面的Adapter
public class MyExpandAdapter extends BaseExpandableListAdapter{
private Context context;
private List<Phone.DataBean> list;
private AddSub.OnNumChangedListener mOnNumChangedListener;
public void setmOnNumChangedListener(AddSub.OnNumChangedListener mOnNumChangedListener) {
this.mOnNumChangedListener = mOnNumChangedListener;
}
public MyExpandAdapter(Context context, List<Phone.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public int getGroupCount() {
return list.size();
}
@Override
public int getChildrenCount(int i) {
return list.get(i).getList().size();
}
@Override
public Object getGroup(int i) {
return list.get(i);
}
@Override
public Object getChild(int i, int i1) {
return list.get(i).getList().get(i1);
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
GroupViewHolder groupViewHolder = null;
if(view==null){
view = View.inflate(context,R.layout.item_first,null);
groupViewHolder = new GroupViewHolder();
groupViewHolder.group_box = view.findViewById(R.id.group_box);
groupViewHolder.group_text = view.findViewById(R.id.group_text);
view.setTag(groupViewHolder);
}else{
groupViewHolder = (GroupViewHolder) view.getTag();
}
groupViewHolder.group_text.setText(list.get(i).getSellerName());
groupViewHolder.group_box.setChecked(list.get(i).isChecked());
return view;
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
ChildViewHolder childViewHolder = null;
if(view == null){
view = View.inflate(context,R.layout.item_two,null);
childViewHolder = new ChildViewHolder();
childViewHolder.child_box = view.findViewById(R.id.child_box);
childViewHolder.child_text = view.findViewById(R.id.child_text);
childViewHolder.child_image = view.findViewById(R.id.child_image);
childViewHolder.child_text1 = view.findViewById(R.id.child_text1);
childViewHolder.mAddSub = view.findViewById(R.id.child_addsub);
view.setTag(childViewHolder);
}else{
childViewHolder = (ChildViewHolder) view.getTag();
}
final Phone.DataBean.ListBean listBean = list.get(i).getList().get(i1);
childViewHolder.child_text.setText(listBean.getTitle());
//(图片)字符串截取
String images = list.get(i1).getList().get(0).getImages();
String[] split = images.split("!");
Picasso.with(context).load(split[0]).into(childViewHolder.child_image);
childViewHolder.child_text1.setText(listBean.getPrice());
childViewHolder.child_box.setChecked(listBean.isChecked());
childViewHolder.mAddSub.setOnNumChangedListener(new AddSub.OnNumChangedListener() {
@Override
public void onNumChange(View view, int curNum) {
listBean.setNum(curNum);
if(mOnNumChangedListener!=null){
mOnNumChangedListener.onNumChange(view,curNum);
}
}
});
return view;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}
class GroupViewHolder{
CheckBox group_box;
TextView group_text;
}
class ChildViewHolder{
CheckBox child_box;
ImageView child_image;
TextView child_text;
TextView child_text1;
AddSub mAddSub;
}
}
适配器的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants"
android:orientation="horizontal">
<CheckBox
android:id="@+id/group_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/group_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="商家"
android:textSize="20dp" />
</LinearLayout>
自定义数字加减的控件
Addsub
public class AddSub extends LinearLayout {
private List<Phone.DataBean> list = new ArrayList<>();
private View mView;
private TextView add,num,sub;
private OnNumChangedListener onNumChangedListener;
public void setOnNumChangedListener(OnNumChangedListener onNumChangedListener) {
this.onNumChangedListener = onNumChangedListener;
}
public AddSub(Context context) {
this(context,null);
}
public AddSub(Context context, @Nullable AttributeSet attrs) {
this(context, attrs,-1);
}
public AddSub(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
initListener();
getCount();
}
private void initListener() {
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
jia();
}
});
sub.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
jian();
}
});
}
private void jian() {
String string = num.getText().toString();
int i = Integer.parseInt(string);
if(i>1){
i--;
setCurrentcount(i);
}else {
Toast.makeText(getContext(),"不能再少了。。。",Toast.LENGTH_LONG).show();
}
}
private void jia() {
String string = num.getText().toString();
int i = Integer.parseInt(string);
i++;
setCurrentcount(i);
}
private void initView(Context context) {
mView = View.inflate(context, R.layout.num, this);
add = mView.findViewById(R.id.addtext);
num = mView.findViewById(R.id.numtext);
sub = mView.findViewById(R.id.subtext);
num.setText("1");
}
public int getCount() {
return Integer.parseInt(num.getText().toString());
}
public void setCurrentcount(int currentcount) {
num.setText(currentcount+"");
if(onNumChangedListener != null){
onNumChangedListener.onNumChange(this,currentcount);
}
}
public interface OnNumChangedListener{
void onNumChange(View view,int curNum);
}
}
在自定义控件的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/subtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="-"
android:textColor="#000" />
<TextView
android:id="@+id/numtext"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="10dp"
android:text="TextView"
android:textColor="#000" />
<TextView
android:id="@+id/addtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="+"
android:textColor="#000" />
</LinearLayout>