自定义搜索代码,展示主页面层
《package com.example.week_02.frag;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.example.week_02.R;
import com.example.week_02.di.bean.RecyleBean;
import com.example.week_02.di.core.IConstant;
import com.example.week_02.di.presenter.IPresenter;
import com.example.week_02.ui.adapter.IAdapter;
import com.google.gson.Gson;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import com.zhy.view.flowlayout.FlowLayout;
import com.zhy.view.flowlayout.TagAdapter;
import com.zhy.view.flowlayout.TagFlowLayout;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import static com.lzy.okgo.utils.HttpUtils.runOnUiThread;
public class FragShow extends Fragment implements IConstant.IView {
@BindView(R.id.edittext)
EditText edittext;
@BindView(R.id.ss)
Button ss;
@BindView(R.id.recy)
RecyclerView recy;
Unbinder unbinder;
@BindView(R.id.srl_container)
SmartRefreshLayout srlContainer;
@BindView(R.id.id_flowlayout)
TagFlowLayout idFlowlayout;
private IPresenter iPresenter;
private Context context;
private IAdapter iAdapter;
private AlertDialog alertDialog;
private TextView textView;
private int page = 1;//页数默认为1
private int count = 1;//默认每次1个数据
private String name;
private ArrayList<String> list;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_show, container, false);
unbinder = ButterKnife.bind(this, view);
list = new ArrayList<>();
/* initData();*/
//p层
iPresenter = new IPresenter();
//绑定
iPresenter.binding(this);
srlContainer.setEnableLoadMore(true); //设置可以上拉加载
srlContainer.setEnableAutoLoadMore(false);//上拉加载具有弹性效果
//点击
ss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取到输入框的值 传送给P层
name = edittext.getText().toString();
iPresenter.request(name, page, count);
/* iPresenter.request(name, page, count);*/
//把输入框内容放入历史集合中
list.add(name + "");
idFlowlayout.setAdapter(new TagAdapter<String>(list) {
@Override
public View getView(FlowLayout parent, int position, String s) {
textView = new TextView(getActivity());
//数据之间的距离
textView.setPadding(20, 20, 20, 20);
//字体大小
textView.setTextSize(10);
textView.setText(s);
return textView;
}
});
idFlowlayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener() {
@Override
public boolean onTagClick(View view, int position, FlowLayout parent) {
Toast.makeText(getActivity(), "" + textView.getText().toString(), Toast.LENGTH_SHORT).show();
return false;
}
});
/* //设置监听
idFlowlayout.setOnSelectListener(new TagFlowLayout.OnSelectListener() {
@Override
public void onSelected(Set<Integer> selectPosSet) {
//点击
Toast.makeText(getActivity(), "" + textView.getText().toString(), Toast.LENGTH_SHORT).show();
*//* //跳转
startActivity(new Intent(MainActivity.this,TwoActivity.class));*//*
}
});*/
}
});
return view;
}
@Override
public void showData(final String s) {
runOnUiThread(new Runnable() {
@Override
public void run() {
//解析数据
RecyleBean bean = new Gson().fromJson(s, RecyleBean.class);
final List<RecyleBean.ResultBean> result = bean.getResult();
//布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
recy.setLayoutManager(linearLayoutManager);
//设置适配器
iAdapter = new IAdapter(R.layout.layout_item, result);
recy.setAdapter(iAdapter);
//* Toast.makeText(getActivity(), "" + result, Toast.LENGTH_SHORT).show();*//*
//删除
iAdapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {
result.remove(position);
iAdapter.notifyDataSetChanged();
Toast.makeText(getActivity(), "删除成功", Toast.LENGTH_SHORT).show();
return false;
}
});
}
});
//上下拉刷新
//下拉刷新Refresh
srlContainer.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
//进行一次网络请求数据
page = 1;
count = 1;
iPresenter.request(name, page, count);
iAdapter.notifyDataSetChanged();//刷新适配器
srlContainer.finishRefresh(true);
}
});//下拉刷新
//上拉刷新更多
srlContainer.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
if (page < 7) {
//page++;//让我的页数+1
count++;//当前页数据+1
//请求数据
iPresenter.request(name, page, count);
//刷新适配器
iAdapter.notifyDataSetChanged();
Toast.makeText(getActivity(), "刷新数据成功", Toast.LENGTH_SHORT).show();
//刷新成功之后停止刷新
srlContainer.finishLoadMore(true);
} else {
Toast.makeText(getActivity(), "没有数据了", Toast.LENGTH_SHORT).show();
//停止刷新
srlContainer.finishLoadMore(true);
}
}
});//上拉刷新更多
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
}
》
P层
《package com.example.week_02.di.presenter;
import com.example.week_02.di.core.IConstant;
import com.example.week_02.di.model.Modell;
import java.lang.ref.SoftReference;
public class IPresenter implements IConstant.IPersenter<IConstant.IView> {
IConstant.IView iView;
private Modell modell;
private SoftReference softReference;
@Override
public void binding(IConstant.IView iView) {
this.iView = iView;
modell = new Modell();
softReference = new SoftReference<>(modell);
}
@Override
public void untying(IConstant.IView iView) {
softReference.clear();
}
public void request(String name, int page, int count) {
modell.response(name, new IConstant.IModel.oncallBack() {
@Override
public void oncallBack(String s) {
iView.showData(s);
}
});
}
}
》
m层
package com.example.week_02.di.model;
import android.util.Log;
import com.example.week_02.di.core.IConstant;
import com.example.week_02.di.core.Interutil;
import com.example.week_02.di.core.Oksingle;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class Modell {
public void response(String name, final IConstant.IModel.oncallBack oncallBack) {
String urlString = Interutil.urlString + “?keyword=” + name + “&page=” + 1 + “&count=” + 5;
Oksingle.getInstance().get(urlString, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
oncallBack.oncallBack(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String s = response.body().string();
oncallBack.oncallBack(s);
Log.i("嗯哼", "onResponse: 额那个");
}
});
}
}
接口
《package com.example.week_02.di.core;
public interface IConstant {
//v层
public interface IView {
/* //展示
public void showLoading(String name);
//隐藏
public void hideLoading();
*/
//数据展示
public void showData(String s);
}
//p层
public interface IPersenter<IView> {
//绑定
public void binding(IView iView);
//解绑
public void untying(IView iView);
//交互
public void request(String name, int page, int count);
}
//model
public interface IModel {
public void response(String name, oncallBack callback);
public interface oncallBack {
public void oncallBack(String s);
}
}
}
》
网址
《package com.example.week_02.di.core;
public class Interutil {
public static final String urlString =“http://172.17.8.100/small/commodity/v1/findCommodityByKeyword”;
}
》
封装http
《package com.example.week_02.di.core;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
public class Oksingle {
private static Oksingle oksingle;
private final OkHttpClient client;
private Oksingle() {
client = new OkHttpClient.Builder().
build();
}
public static Oksingle getInstance() {
if (oksingle == null) {
synchronized (Oksingle.class) {
if (oksingle == null) {
oksingle = new Oksingle();
}
}
}
return oksingle;
}
public void get(String urlString, Callback callback) {
Request request = new Request.Builder()
.url(urlString).build();
client.newCall(request).enqueue(callback);
}
public void post(FormBody formBody, String UrlString, Callback callback) {
Request request = new Request.Builder()
.method("POST", formBody)
.url(UrlString).build();
client.newCall(request).enqueue(callback);
}
}
》