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); } }