菜单

MainActivity

package com.example.administrator.xiangmuerdierzhoumn;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity{

    private EditText menu_edit;
    private TextView menu_text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        menu_edit = findViewById(R.id.menu_edit);
        menu_text = findViewById(R.id.menu_text);
         menu_text.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 String s = menu_edit.getText().toString();
                 Intent intent =new Intent(MainActivity.this,Main2Activity.class);
                 intent.putExtra("menu_name",s);
                 startActivity(intent);
             }
         });
    }
}

--------------------------------

package com.example.administrator.xiangmuerdierzhoumn;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.view.menu.MenuAdapter;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;

import com.example.administrator.xiangmuerdierzhoumn.adapter.MyAdapter;
import com.example.administrator.xiangmuerdierzhoumn.bean.MenuBean;
import com.example.administrator.xiangmuerdierzhoumn.presenter.MenuPresenter;
import com.example.administrator.xiangmuerdierzhoumn.view.MenuView;

import java.util.List;

public class Main2Activity extends AppCompatActivity implements MenuView{

    private RecyclerView menu_recycler;
    private String menu_name;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        menu_recycler = findViewById(R.id.menu_recycler);
        Intent intent = getIntent();
        menu_name = intent.getStringExtra("menu_name");
        MenuPresenter menuPresenter =new MenuPresenter(this);
        menuPresenter.Home(menu_name);



        Toast.makeText(this,"========"+ menu_name,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void getSuccess(MenuBean menuBean) {
        MenuBean.ResultBean result = menuBean.getResult();
        List<MenuBean.ResultBean.DataBean> data = result.getData();
        MyAdapter myAdapter =new MyAdapter(data,Main2Activity.this,menu_name);
        LinearLayoutManager linearLayoutManager =new LinearLayoutManager(this);
        menu_recycler.setLayoutManager(linearLayoutManager);
        menu_recycler.setAdapter(myAdapter);
    }
}
--------------------------------------------
package com.example.administrator.xiangmuerdierzhoumn;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.example.administrator.xiangmuerdierzhoumn.bean.MenuBean;
import com.example.administrator.xiangmuerdierzhoumn.presenter.XqPresenter;
import com.example.administrator.xiangmuerdierzhoumn.view.XqView;
import com.stx.xhb.xbanner.XBanner;
import com.stx.xhb.xbanner.transformers.Transformer;
import java.util.List;

public class Main3Activity extends AppCompatActivity implements XqView{

    private XBanner xbanner;
    private ImageView xbanner_image;
    private TextView jieshao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        xbanner = findViewById(R.id.xbanner);
        xbanner_image = findViewById(R.id.xbanner_iamge);
        jieshao = findViewById(R.id.jieshao);
        Intent intent = getIntent();
        String xQname = intent.getStringExtra("XQname");

        Toast.makeText(Main3Activity.this,xQname,Toast.LENGTH_SHORT).show();

        XqPresenter xqPresenter =new XqPresenter(Main3Activity.this);
        xqPresenter.Home(xQname);
    }

    @Override
    public void getSuccess(MenuBean menuBean) {
        MenuBean.ResultBean result = menuBean.getResult();
        final List<MenuBean.ResultBean.DataBean> data = result.getData();
        xbanner.setData(data,null);
        xbanner.setmAdapter(new XBanner.XBannerAdapter() {
            @Override
            public void loadBanner(XBanner banner, Object model, View view, int position) {
                Glide.with(Main3Activity.this).load(data.get(position).getSteps().get(0).getImg()).into(xbanner_image);
                jieshao.setText("步骤:"+data.get(position).getSteps().get(0).getStep());
            }
        });
        xbanner.setPageChangeDuration(5000);
        xbanner.setPageTransformer(Transformer.Default);
    }
}
---------------------------------------

adapter

package com.example.administrator.xiangmuerdierzhoumn.adapter;

import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.administrator.xiangmuerdierzhoumn.Main2Activity;
import com.example.administrator.xiangmuerdierzhoumn.Main3Activity;
import com.example.administrator.xiangmuerdierzhoumn.R;
import com.example.administrator.xiangmuerdierzhoumn.bean.MenuBean;

import java.util.List;

/**
 * Created by Administrator on 2018/7/14.
 */

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    private List<MenuBean.ResultBean.DataBean> data;
    private Main2Activity main2Activity;
    private String menu_anme;
    public MyAdapter(List<MenuBean.ResultBean.DataBean> data, Main2Activity main2Activity, String menu_name) {
                    this.data = data;
                    this.main2Activity = main2Activity;
                    this.menu_anme =menu_name;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View inflate = LayoutInflater.from(main2Activity).inflate(R.layout.recycler_layout, parent, false);
        MyViewHolder myViewHolder =new MyViewHolder(inflate);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        Glide.with(main2Activity).load(data.get(position).getAlbums().get(0)).into(holder.recycler_image);
        holder.recycler_text1.setText(data.get(position).getTitle());
        holder.recycler_text2.setText(data.get(position).getTags());
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent =new Intent(main2Activity, Main3Activity.class);
                intent.putExtra("XQname",menu_anme);
                main2Activity.startActivity(intent);
            }
        });

    }

    @Override
    public int getItemCount() {
        return data==null?0:data.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder{

        private final ImageView recycler_image;
        private final TextView recycler_text1;
        private final TextView recycler_text2;

        public MyViewHolder(View itemView) {
            super(itemView);
            recycler_image = itemView.findViewById(R.id.recycler_image);
            recycler_text1 = itemView.findViewById(R.id.recycler_text1);
            recycler_text2 = itemView.findViewById(R.id.recycler_text2);
        }
    }


}
-----------------------

model

package com.example.administrator.xiangmuerdierzhoumn.model;

import android.content.Context;
import android.util.Log;

import com.example.administrator.xiangmuerdierzhoumn.bean.MenuBean;
import com.example.administrator.xiangmuerdierzhoumn.utils.RetrofitService;
import com.example.administrator.xiangmuerdierzhoumn.utils.RetrofitUtils;

import java.util.Map;

import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

/**
 * Created by Administrator on 2018/7/14.
 */

public class MenuModel {
    private static final String TAG = "MenuModel";
    private Context context;
    private String url="http://apis.juhe.cn/cook/query.php?key=ccde28ed926c8594156fc4a592a8ebe0";
    public void getData(String menu_name, final IModel iModel, Map<String,String> map){
       /* OkHttpUtils okHttpUtils = OkHttpUtils.getInstance(context);
        okHttpUtils.getData(url+"&menu="+menu_name, new OkHttpUtils.ICallback() {
            @Override
            public void getData(String result) {
                Gson gson =new Gson();
                MenuBean menuBean = gson.fromJson(result, MenuBean.class);
                iModel.getSuccess(menuBean);
            }
        });*/
        RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils();
        RetrofitService request = retrofitUtils.createRequest(RetrofitService.class);
        Observable<MenuBean> observable = request.postData(map);

        observable.subscribeOn(Schedulers.newThread())//子线程
                .observeOn(AndroidSchedulers.mainThread())//主线程
                .subscribe(new Observer<MenuBean>() {
                    @Override
                    public void onSubscribe(Disposable disposable) {?????

                    }

                    @Override
                    public void onNext(MenuBean menuBean) {//请求下一个,请求中
                        Log.d(TAG, "onNext: ");
                    }

                    @Override
                    public void onError(Throwable throwable) {//请求失败

                    }

                    @Override
                    public void onComplete() {//请求完成

                    }
                });
    }
    public interface IModel{
        void getSuccess(MenuBean menuBean);
    }
}
 
package com.example.administrator.xiangmuerdierzhoumn.model;

import android.content.Context;

import com.example.administrator.xiangmuerdierzhoumn.bean.MenuBean;
import com.example.administrator.xiangmuerdierzhoumn.utils.OkHttpUtils;
import com.google.gson.Gson;

/**
 * Created by Administrator on 2018/7/14.
 */

public class XqModel {
    private Context context;
    private String url="http://apis.juhe.cn/cook/query.php?key=ccde28ed926c8594156fc4a592a8ebe0";
    public void getData(String menu_name,final IModel iModel){
        OkHttpUtils okHttpUtils = OkHttpUtils.getInstance(context);
        okHttpUtils.getData(url+"&menu="+menu_name, new OkHttpUtils.ICallback() {
            @Override
            public void getData(String result) {
                Gson gson =new Gson();
                MenuBean menuBean = gson.fromJson(result, MenuBean.class);
                iModel.getSuccess(menuBean);
            }
        });
    }
    public interface IModel{
        void getSuccess(MenuBean menuBean);
    }
}

presenter


package com.example.administrator.xiangmuerdierzhoumn.presenter;

import com.example.administrator.xiangmuerdierzhoumn.bean.MenuBean;
import com.example.administrator.xiangmuerdierzhoumn.model.MenuModel;
import com.example.administrator.xiangmuerdierzhoumn.view.MenuView;

/**
 * Created by Administrator on 2018/7/14.
 */

public class MenuPresenter {
    private MenuView menuViews;
    private final MenuModel menuModel;

    public MenuPresenter(MenuView menuView){
        this.menuViews=menuView;
        menuModel = new MenuModel();
    }
    public void Home(String menu_name){
        menuModel.getData(menu_name,new MenuModel.IModel() {
            @Override
            public void getSuccess(MenuBean menuBean) {
                menuViews.getSuccess(menuBean);
            }
        });
    }
}
 
package com.example.administrator.xiangmuerdierzhoumn.presenter;

import com.example.administrator.xiangmuerdierzhoumn.bean.MenuBean;
import com.example.administrator.xiangmuerdierzhoumn.model.MenuModel;
import com.example.administrator.xiangmuerdierzhoumn.model.XqModel;
import com.example.administrator.xiangmuerdierzhoumn.view.MenuView;
import com.example.administrator.xiangmuerdierzhoumn.view.XqView;

/**
 * Created by Administrator on 2018/7/14.
 */

public class XqPresenter {
    private XqView xqViews;
    private final XqModel xqModel;

    public XqPresenter(XqView xqView){
        this.xqViews =xqView;
        xqModel = new XqModel();
    }
    public void Home(String menu_name){
        xqModel.getData(menu_name,new XqModel.IModel() {
            @Override
            public void getSuccess(MenuBean menuBean) {
                xqViews.getSuccess(menuBean);
            }
        });
    }
}
view
 
package com.example.administrator.xiangmuerdierzhoumn.view;

import com.example.administrator.xiangmuerdierzhoumn.bean.MenuBean;

/**
 * Created by Administrator on 2018/7/14.
 */

public interface MenuView {
    void getSuccess(MenuBean menuBean);
}

 
package com.example.administrator.xiangmuerdierzhoumn.view;

import com.example.administrator.xiangmuerdierzhoumn.bean.MenuBean;

/**
 * Created by Administrator on 2018/7/14.
 */

public interface XqView {
    void getSuccess(MenuBean menuBean);
}

自定义

package com.example.administrator.xiangmuerdierzhoumn;


import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;

public class ZxcView extends ViewGroup {

    private int widthsize;
    private int widthmode;
    private int heihgtsize;
    private int heihgtmode;
    private int measuredWidth;
    private int measuredHeight;
    int pangding=10;
    public ZxcView(Context context) {
        this(context,null);
    }

    public ZxcView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public ZxcView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        measureChildren(widthMeasureSpec,heightMeasureSpec);
//        MeasuredDimension(widthMeasureSpec,heightMeasureSpec);
        //获取副控件的高宽
        widthsize = MeasureSpec.getSize(widthMeasureSpec);
        widthmode = MeasureSpec.getMode(widthMeasureSpec);
        heihgtsize = MeasureSpec.getSize(heightMeasureSpec);
        heihgtmode = MeasureSpec.getMode(heightMeasureSpec);

        int width=0;
        int heihgt=0;
        int chiwidth=0;
        int chiheihgt=0;
        int linwidht=0;
        int linheight=0;
        //获取子View的个数
        int chiIdCount=getChildCount();

        for(int i=0;i<chiIdCount;i++){
            View chiview=getChildAt(i);
            //测量ziView的宽高
            measureChild(chiview,widthMeasureSpec,heightMeasureSpec);

            int measuredWidth = chiview.getMeasuredWidth();
            int measuredHeight = chiview.getMeasuredHeight();
            if(linwidht+chiwidth>widthsize){
//               换行的话最大宽度设置为0
                linwidht=10;
                //增加一行高度
                linheight+=chiheihgt;
                linheight+=10;
                linwidht+=chiwidth;
                linwidht+=10;
            }else{
//                不换行就继续增加宽度
                linwidht+=chiwidth;
                linwidht+=10;

                //获取最本行最高
                heihgt = Math.max(linheight, chiheihgt);
            }
            if(i==chiIdCount-1){
                 width = Math.max(chiwidth, linwidht);

            }

            setMeasuredDimension(width,heihgt);

            super.onMeasure(widthMeasureSpec,heightMeasureSpec);

        }



    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        int chiIdCount=getChildCount();
        int width=0;
        int heihgt=0;
        int chiwidth=0;
        int chiheihgt=0;
        int linwidht=0;
        int linheight=10;

        for(int j=0;j<chiIdCount;j++){
            View chiview=getChildAt(j);
            chiwidth = chiview.getMeasuredWidth();
            chiheihgt = chiview.getMeasuredHeight();

            if(linwidht+chiwidth>widthsize){
                linwidht=10;
                linheight+=chiheihgt;
                linheight+=10;

//                换行
//               换行的话最大宽度设置为0
                layoutChildView(chiview,linwidht,linheight,linwidht+chiwidth,linheight+chiheihgt);
                linwidht+=chiwidth;
                linwidht+=10;
                //增加一行高度

            }else{
//                不换行

                linwidht+=10;
                layoutChildView(chiview,linwidht,linheight,linwidht+chiwidth,linheight+chiheihgt);
//                不换行就继续增加宽度
                linwidht+=chiwidth;
                linwidht+=10;

                //获取最本行最高
//                chiheihgt = Math.max(linheight, chiheihgt);
            }
        }






    }

    public void layoutChildView(View child, int l, int t, int r, int b) {
        child.layout(l, t, r, b);
    }
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值