列表

<android.support.v7.widget.RecyclerView
        android:id="@+id/search_rlv"
        android:layout_width="match_parent"

        android:layout_height="match_parent" />

rlvadapter_item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="10dp"
    android:background="#FFF"
    android:id="@+id/mlinear"
    android:orientation="horizontal">


    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/rlv_sdv"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_gravity="center_vertical"
        android:layout_margin="5dp"
        app:placeholderImage="@mipmap/ic_launcher" />


    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="20dp"
        android:text="红烧肉"
        android:textColor="#000"
        android:textSize="25sp" />
</LinearLayout>


java类

bean

@Entity
public class Cook {
    @Id(autoincrement = true)
    private Long id;


    private String name;


    @Generated(hash = 903386829)
    public Cook(Long id, String name) {
        this.id = id;
        this.name = name;
    }


    @Generated(hash = 795568660)
    public Cook() {
    }


    public Long getId() {
        return this.id;
    }


    public void setId(Long id) {
        this.id = id;
    }


    public String getName() {
        return this.name;
    }


    public void setName(String name) {
        this.name = name;
    }


    @Override
    public String toString() {
        return "Cook{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

MyApp

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //初始化Fresco
        Fresco.initialize(this);


        GreenDaoUtils.initGreenDao(this);
    }
}

OkHttpUtils

public class OkHttpUtils {
    private static OkHttpUtils httpUtils;
    private final OkHttpClient client;


    //单例模式
    private OkHttpUtils() {
        //创建拦截器
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);
        //初始化OkHttp
        client = new OkHttpClient.Builder()
                .addInterceptor(logging)//添加拦截器
                .connectTimeout(5, TimeUnit.SECONDS)//设置连接超时
                .build();
    }


    public static OkHttpUtils getHttpUtils() {
        if (httpUtils == null) {
            synchronized (OkHttpUtils.class) {
                if (httpUtils == null) {
                    httpUtils = new OkHttpUtils();
                }
            }
        }
        return httpUtils;
    }


    /**
     * GET请求
     *
     * @param url      请求地址
     * @param callback 回调
     */
    public void doGet(String url, Callback callback) {
        Request request = new Request.Builder().url(url).build();
        client.newCall(request).enqueue(callback);
    }




    /**
     * post请求
     *
     * @param url      请求地址
     * @param params   请求参数
     * @param callback 回调
     */
    public void doPost(String url, Map<String, String> params, Callback callback) {
        //这里可以加网络判断


        //创建Request
        FormBody.Builder builder = new FormBody.Builder();
        for (Map.Entry<String, String> entry : params.entrySet()) {
            builder.add(entry.getKey(), entry.getValue());
        }
        FormBody formBody = builder.build();
        Request request = new Request.Builder()
                .url(url)
                .post(formBody)
                .build();
        client.newCall(request).enqueue(callback);
    }
}

OnNetListener

public interface OnNetListener<T> {
    public void onSuccess(T t);


    public void onFailure(Exception e);
}

UrlsAPi

public class UrlsAPi {
    public static final String BASE_URL = "http://apis.juhe.cn/cook/query.php";
}

IMainModel

public interface IMainModel {
    public void getCook(String key, String menu, OnNetListener<CookBean> onNetListener);
}

MainModel

public class MainModel extends BaseModel implements IMainModel {
    @Override
    public void getCook(String key, String menu, final OnNetListener<CookBean> onNetListener) {
        Map<String, String> params = new HashMap<>();
        params.put("key", key);
        params.put("menu", menu);
        OkHttpUtils.getHttpUtils().doPost(UrlsAPi.BASE_URL, params, new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.onFailure(e);
                    }
                });
            }


            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                final CookBean cookBean = new Gson().fromJson(string, CookBean.class);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.onSuccess(cookBean);
                    }
                });


            }
        });
    }
}

BaseModel

public class BaseModel {
    protected Handler handler = new Handler(Looper.getMainLooper());
}

IMainView

public interface IMainView {
    public void showData(CookBean cookBean);
}

MainPresenter

public class MainPresenter extends BasePresenter {
    private IMainView iMainView;
    private final IMainModel iMainModel;


    public MainPresenter(IMainView iMainView) {
        this.iMainView = iMainView;
        iMainModel = new MainModel();
    }


    public void getCook(String menu) {
        iMainModel.getCook("2bbfedc295a8bb828111c047c47b4000", menu, new OnNetListener<CookBean>() {
            @Override
            public void onSuccess(CookBean cookBean) {
                if (cookBean.getResultcode().equals("200")) {
                    iMainView.showData(cookBean);
                }
            }


            @Override
            public void onFailure(Exception e) {


            }
        });
    }


    public void onDetach() {
        if (iMainView != null) {
            iMainView = null;
        }
    }
}

MyRlvAdapter

public class MyRlvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<CookBean.ResultBean.DataBean> dataList;
    private LayoutInflater inflater;
    private OnItemLongClickListener onItemLongClickListener;


    public MyRlvAdapter(Context context, List<CookBean.ResultBean.DataBean> dataList) {
        this.context = context;
        this.dataList = dataList;
        inflater = LayoutInflater.from(context);
    }




    public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) {
        this.onItemLongClickListener = onItemLongClickListener;
    }


    public interface OnItemLongClickListener {
        void onItemClick(View view, int position);
    }


    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.rlvadapter_item, null);
        return new MyViewHolder(view);
    }


    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        MyViewHolder myViewHolder = (MyViewHolder) holder;


        final CookBean.ResultBean.DataBean dataBean = dataList.get(position);


        String images = dataBean.getAlbums().get(0);
        myViewHolder.rlvSdv.setImageURI(images);
        myViewHolder.tvTitle.setText(dataBean.getTitle());


        myViewHolder.mlinear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dataList.remove(position);
                notifyDataSetChanged();
            }
        });
    }


    @Override
    public int getItemCount() {
        return dataList.size();
    }


    class MyViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.rlv_sdv)
        SimpleDraweeView rlvSdv;
        @BindView(R.id.tv_title)
        TextView tvTitle;
        @BindView(R.id.mlinear)
        LinearLayout mlinear;


        public MyViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
        }
    }
}

Activity

public class SearchActivity extends AppCompatActivity implements IMainView {


    @BindView(R.id.iv_back)
    ImageView ivBack;
    @BindView(R.id.ed_menu)
    EditText edMenu;
    @BindView(R.id.bt_sousuo)
    Button btSousuo;
    @BindView(R.id.search_rlv)
    RecyclerView searchRlv;
    private MainPresenter mainPresenter;
    private String name;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        ButterKnife.bind(this);
        Intent intent = getIntent();
        name = intent.getStringExtra("name");
        mainPresenter = new MainPresenter(this);
        mainPresenter.getCook(name);
        //设置布局管理器
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        searchRlv.setLayoutManager(layoutManager);
    }


    @OnClick({R.id.iv_back, R.id.bt_sousuo})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.iv_back:
                //返回
                this.finish();
                break;
            case R.id.bt_sousuo:
                //搜索
                mainPresenter.getCook(name);
                break;
        }
    }


    @Override
    public void showData(final CookBean cookBean) {
        List<CookBean.ResultBean.DataBean> data = cookBean.getResult().getData();


        MyRlvAdapter myRlvAdapter = new MyRlvAdapter(this, data);
        searchRlv.setAdapter(myRlvAdapter);


    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        ButterKnife.bind(this).unbind();
        //防止内存泄漏
        if (mainPresenter != null) {
            mainPresenter.onDetach();
            mainPresenter = null;
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值