MainActivity代码:
public class MainActivity extends AppCompatActivity implements CallBacks<List<Goods>> {
private EditText met;
private GoodsPresenter presenter;
private List<Goods> list = new ArrayList<>();
String url = "http://www.zhaoapi.cn/product/searchProducts?keywords=手机&page=";
private LinearAdapter adapter;
private GridAdapter gridAdapter;
private XRecyclerView mxrv;
private ImageView msou;
int page = 1;
int sort=0;
private Button mbt3;
private Button mbt1;
private Button mbt2;
private ImageView mqie;
boolean aaa = true;
private GridLayoutManager layoutManager2;
private LinearLayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化组件
met = findViewById(R.id.mET);
mxrv = findViewById(R.id.mXRV);
//创建对象
presenter = new GoodsPresenter(this);
String urls = url+page+"&sort="+sort;
presenter.goods(urls);
//设置适配器
adapter = new LinearAdapter(this,list);
gridAdapter = new GridAdapter(MainActivity.this,list);
//设置布局管理类
layoutManager = new LinearLayoutManager(this);
mxrv.setLayoutManager(layoutManager);
mxrv.setAdapter(adapter);
//点击按钮搜索
msou = findViewById(R.id.mSou);
msou.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list.clear();
String trim = met.getText().toString().trim();
sort = 0;
page = 1;
url = "http://www.zhaoapi.cn/product/searchProducts?keywords="+trim+"&page=";
String urls = url+page+"&sort="+sort;
presenter.goods(urls);
}
});
//设置刷新
mxrv.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
page = 1;
String urls = url+page+"&sort="+sort;
list.clear();
presenter.goods(urls);
}
@Override
public void onLoadMore() {
page++;
String urls = url+page+"&sort="+sort;
presenter.goods(urls);
}
});
//综合
mbt1 = findViewById(R.id.mBt1);
mbt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list.clear();
sort=0;
page=1;
String urls = url+page+"&sort="+sort;
presenter.goods(urls);
}
});
//销量
mbt2 = findViewById(R.id.mBt2);
mbt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list.clear();
sort=1;
page=1;
String urls = url+page+"&&sort="+sort;
presenter.goods(urls);
}
});
//价格排序
mbt3 = findViewById(R.id.mBt3);
mbt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list.clear();
sort=2;
page=1;
String urls = url+page+"&&sort="+sort;
presenter.goods(urls);
}
});
//切换布局
mqie = findViewById(R.id.mQie);
mqie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(aaa){
gridAdapter = new GridAdapter(MainActivity.this,list);
//设置布局管理类
layoutManager2 = new GridLayoutManager(MainActivity.this,2);
mxrv.setLayoutManager(layoutManager2);
mxrv.setAdapter(gridAdapter);
aaa=false;
}else {
adapter = new LinearAdapter(MainActivity.this,list);
//设置布局管理类
layoutManager = new LinearLayoutManager(MainActivity.this);
mxrv.setLayoutManager(layoutManager);
mxrv.setAdapter(adapter);
aaa=true;
}
}
});
}
@Override
public void success(List<Goods> goods) {
list.addAll(goods);
adapter.notifyDataSetChanged();
mxrv.loadMoreComplete();
mxrv.refreshComplete();
gridAdapter.notifyDataSetChanged();
}
@Override
public void fail(Result result) {
}
}
model代码:
public class GoodsModel {
public static Result getGoods(String url){
String s = OkHttpUtils.get(url);
Type type = new TypeToken<Result<List<Goods>>>() {}.getType();
Gson gson = new Gson();
Result result = gson.fromJson(s,type);
return result;
}
}
presenter代码:
public class GoodsPresenter {
private CallBacks callBacks;
public GoodsPresenter(CallBacks callBacks) {
this.callBacks = callBacks;
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Result result = (Result) msg.obj;
if (result.getCode()==0){
callBacks.success(result.getData());
}else {
callBacks.fail(result);
}
}
};
public void goods(final String url){
new Thread(new Runnable() {
@Override
public void run() {
GoodsModel goodsModel = new GoodsModel();
Result result = goodsModel.getGoods(url);
Message message = handler.obtainMessage();
message.obj = result;
handler.sendMessage(message);
}
}).start();
}
}