登录,自定义搜索,分页,历史记录

自定义搜索代码,展示主页面层
《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);
}

}

猜你喜欢

转载自blog.csdn.net/qq_42805722/article/details/87912948
今日推荐