xml:
activity_main:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<include layout="@layout/searchlayout"></include>
<include layout="@layout/titlelayout"></include>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp"
>
<com.example.library.AutoFlowLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/auto_layout"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="历史分类"
android:layout_below="@id/auto_layout"
android:layout_marginTop="80dp"
android:layout_marginLeft="10dp"
android:id="@+id/hostroy"
/>
<com.example.moni.view.FlowLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/fram_layout"
android:layout_below="@id/hostroy"
>
</com.example.moni.view.FlowLayout>
</RelativeLayout>
</LinearLayout>
//头布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="最近搜索"
android:textSize="20sp"
android:layout_marginLeft="10dp"
/>
<ImageView
android:layout_width="25dp"
android:layout_height="25dp"
android:id="@+id/delete"
android:src="@mipmap/sc"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
/>
</RelativeLayout>
//搜索
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
>
<RelativeLayout
android:layout_width="400dp"
android:layout_height="35dp"
android:orientation="horizontal"
android:background="@drawable/search"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
>
<ImageView
android:layout_width="25dp"
android:layout_height="25dp"
android:src="@mipmap/search_icon2"
android:layout_marginTop="6dp"
android:layout_marginLeft="8dp"
android:id="@+id/search"
/>
<EditText
android:layout_width="270dp"
android:layout_height="30dp"
android:layout_marginLeft="35dp"
android:layout_marginTop="3dp"
android:id="@+id/edit_content"
android:hint="在万千商品中海选"
android:background="@null"
android:textSize="20sp"
/>
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/diss"
android:text="取消"
android:textStyle="bold"
android:textSize="20sp"
android:layout_alignParentRight="true"
android:layout_marginTop="10dp"
android:layout_marginRight="15dp"
/>
</RelativeLayout>
//商品
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<include layout="@layout/shopingtitlelayout"></include>
<com.handmark.pulltorefresh.library.PullToRefreshScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/pull_listview"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<View
android:id="@+id/iview"
android:layout_height="0.75dp"
android:layout_width="match_parent"
android:background="#333"
android:layout_marginTop="45dp"/>
<LinearLayout
android:id="@+id/re"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_marginTop="6dp"
android:orientation="horizontal"
android:layout_below="@id/iview">
<Button
android:id="@+id/tvZhonghe"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:text="综合"
android:gravity="center"
android:layout_weight="1"/>
<Button
android:id="@+id/tvXiaoliang"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:text="销量"
android:gravity="center"
android:layout_weight="1"/>
<Button
android:id="@+id/tvPrice"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:text="价格"
android:gravity="center"
android:layout_weight="1"/>
</LinearLayout>
<View
android:id="@+id/view"
android:layout_height="0.75dp"
android:layout_width="match_parent"
android:background="#333"
android:layout_marginTop="5dp"
android:layout_below="@id/re"/>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recycler"
/>
</LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>
</LinearLayout>
//商品头部:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:id="@+id/back"
android:src="@mipmap/leftjiantou"
/>
<RelativeLayout
android:layout_toRightOf="@id/back"
android:layout_marginLeft="10dp"
android:layout_width="400dp"
android:layout_height="40dp"
android:background="@drawable/search"
>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:src="@mipmap/search_icon2"
android:id="@+id/search"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/title"
android:layout_toRightOf="@id/search"
android:background="@null"
android:layout_centerVertical="true"
android:id="@+id/shopping"
/>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/diss"
android:src="@mipmap/a_3"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/kind_liner"
android:id="@+id/huan"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
/>
</RelativeLayout>
//流失布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/auto_tv"
android:layout_height="35dp"
android:layout_width="wrap_content"
android:background="@drawable/horizontal_background_one"
android:text="豆豆娃"
android:textSize="17dp"
android:gravity="center_horizontal"
android:layout_marginTop="3dp"
android:paddingTop="4dp"
android:layout_marginLeft="8dp"/>
</LinearLayout>
//商品展示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/relate"
>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/ion"
android:padding="10dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/phone_title"
android:layout_toRightOf="@id/ion"
android:layout_alignTop="@id/ion"
android:textSize="20sp"
android:layout_marginLeft="5dp"
android:text="111"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/ion"
android:layout_below="@id/phone_title"
android:id="@+id/price"
android:textSize="20sp"
android:textColor="#f00"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:text="22"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sale"
android:text="333"
android:layout_alignBottom="@id/ion"
android:textSize="18sp"
android:layout_toRightOf="@id/ion"
android:layout_marginLeft="5dp"
/>
</RelativeLayout>
//详情:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/web_view"
></WebView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:background="#ffffff"
android:layout_alignParentBottom="true"
>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_height="match_parent">
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:src="@mipmap/f" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="供应商"
/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_height="match_parent">
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:src="@mipmap/g" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="店铺"
/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_height="match_parent">
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:src="@mipmap/l" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好"
/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center"
android:layout_height="match_parent">
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:src="@mipmap/c" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="购物车"
/>
</LinearLayout>
<TextView
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="match_parent"
android:background="#f00"
android:text="加入购物车"
android:textSize="25sp"
android:textColor="#fff"
android:gravity="center"
/>
</LinearLayout>
</RelativeLayout>
Activity:
package com.example.moni;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.library.AutoFlowLayout;
import com.example.library.FlowAdapter;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private List<String> list;
private ImageView search;
private EditText edit_content;
private TextView diss;
private ImageView delete;
private AutoFlowLayout auto_layout;
private View view;
private ViewGroup fram_layout;
private String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
initview();
String data[] = new String[]{
"考拉三周年人气热销榜",
"电动牙刷",
"尤妮佳",
"豆豆鞋",
"沐浴露",
"日东红茶",
"榴莲"
};
for (int i = 0; i < 20; i++) {
TextView textView = new TextView(this);
textView.setText(data[i % data.length]);
textView.setBackgroundResource(R.drawable.flow_item_bg);
ViewGroup.MarginLayoutParams params = new ViewGroup.MarginLayoutParams(ViewGroup.MarginLayoutParams.WRAP_CONTENT, ViewGroup.MarginLayoutParams.WRAP_CONTENT);
params.leftMargin = 20;
params.topMargin = 20;
params.rightMargin = 20;
fram_layout.addView(textView, params);
}
}
private void initview() {
list = new ArrayList<>();
search = findViewById(R.id.search);
edit_content = findViewById(R.id.edit_content);
diss = findViewById(R.id.diss);
delete = findViewById(R.id.delete);
auto_layout = findViewById(R.id.auto_layout);
fram_layout = findViewById(R.id.fram_layout);
search.setOnClickListener(this);
diss.setOnClickListener(this);
delete.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.search:
name = edit_content.getText().toString();
list.add(name);
auto();
break;
case R.id.diss:
edit_content.getText().clear();
break;
case R.id.delete:
edit_content.getText().clear();
auto_layout.removeAllViews();
break;
}
}
private void auto() {
auto_layout.setAdapter(new FlowAdapter(list) {
@Override
public View getView(int i) {
if(list!=null){
view = View.inflate(MainActivity.this, R.layout.sjoplayout, null);
TextView auto_tv=view.findViewById(R.id.auto_tv);
name = list.get(i);
auto_tv.setText(name);
list.clear();
auto_tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,ShoppingActivity.class);
intent.putExtra("title", name);
startActivity(intent);
}
});
}
return view;
}
});
}
}
//商品
package com.example.moni;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ScrollView;
import com.example.moni.adapter.PhoneAdapter;
import com.example.moni.bean.PhoneBean;
import com.example.moni.presenter.PhonePresenterimpl;
import com.example.moni.view.ShoppingView;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
import java.util.List;
public class ShoppingActivity extends AppCompatActivity implements View.OnClickListener,ShoppingView{
private ImageView back;
private ImageView search;
private ImageView diss;
private EditText shopping;
private String title;
private RecyclerView recycler;
private PhonePresenterimpl phonePresenterimpl;
private int page=0;
private int sort=0;
private List<PhoneBean.DataBean> data;
private PhoneAdapter adapter;
private PullToRefreshScrollView pull_listview;
private Button zonghe;
private Button xiaoliang;
private Button price;
private ImageView huan;
private boolean flag=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shopping);
//初始化控件
initview();
title = getIntent().getStringExtra("title");
shopping.setText(title);
back.setOnClickListener(this);
diss.setOnClickListener(this);
//设置排序的监听
zonghe.setOnClickListener(this);
price.setOnClickListener(this);
xiaoliang.setOnClickListener(this);
//设置转换的按钮
huan.setOnClickListener(this);
phonePresenterimpl = new PhonePresenterimpl(this);
phonePresenterimpl.getData(page,sort);
//设置布局管理器
recycler.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
pull_listview.setMode(PullToRefreshBase.Mode.BOTH);
//设置刷新
pull_listview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
page=1;
phonePresenterimpl.getData(page,sort);
pull_listview.onRefreshComplete();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
page++;
phonePresenterimpl.getData(page,sort);
}
});
}
private void initview() {
back = findViewById(R.id.back);
search = findViewById(R.id.search);
diss = findViewById(R.id.diss);
shopping = findViewById(R.id.shopping);
huan = findViewById(R.id.huan);
recycler = findViewById(R.id.recycler);
pull_listview = findViewById(R.id.pull_listview);
zonghe = findViewById(R.id.tvZhonghe);
xiaoliang = findViewById(R.id.tvXiaoliang);
price = findViewById(R.id.tvPrice);
huan = findViewById(R.id.huan);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.back:
finish();
break;
case R.id.diss:
shopping.getText().clear();
break;
case R.id.tvZhonghe:
sort=0;
phonePresenterimpl.getData(page,sort);
break;
case R.id.tvXiaoliang:
sort=1;
phonePresenterimpl.getData(page,sort);
break;
case R.id.tvPrice:
sort=2;
phonePresenterimpl.getData(page,sort);
break;
case R.id.huan:
if(flag==false){
recycler.setLayoutManager(new GridLayoutManager(this,2));
flag=true;
huan.setImageResource(R.mipmap.kind_liner);
}else if(flag==true){
recycler.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
flag=false;
huan.setImageResource(R.mipmap.kind_grid);
}
break;
}
}
@Override
public void onSuccess(PhoneBean phoneBean) {
data = phoneBean.getData();
if(data!=null){
runOnUiThread(new Runnable() {
@Override
public void run() {
adapter = new PhoneAdapter(ShoppingActivity.this,data);
recycler.setAdapter(adapter);
pull_listview.onRefreshComplete();
adapter.setCallback(new PhoneAdapter.onItemCilck() {
@Override
public void onItemClick(int position) {
Intent intent=new Intent(ShoppingActivity.this,XiangqingActivity.class);
intent.putExtra("url",data.get(position).getDetailUrl());
startActivity(intent);
}
});
}
});
}
}
@Override
public void onError(int code) {
}
}
view:
//流失布局
package com.example.moni.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
public class FlowLayout extends ViewGroup{
private List<List<View>> mAllViews=new ArrayList<>();
//记录每一行的行高,行数就是该集合的元素个数
private List<Integer> mLineHeight=new ArrayList<>();
public FlowLayout(Context context) {
this(context,null);
}
public FlowLayout(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public FlowLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int sizeWidth = MeasureSpec.getSize(widthMeasureSpec);
int modeWidth = MeasureSpec.getMode(widthMeasureSpec);
int sizeHeight = MeasureSpec.getSize(heightMeasureSpec);
int modeHeight = MeasureSpec.getMode(heightMeasureSpec);
//wrap_content时,需要自己计算宽高
int width=0;
int height=0;
//记录每一行的宽度和高度
int lineWidth=0;
int lineHeight=0;
//得到内部元素的个数
int cCount=getChildCount();
for (int i = 0; i < cCount; i++) {
View child = getChildAt(i);
//测量子view的宽和高
measureChild(child,widthMeasureSpec,heightMeasureSpec);
//得到layoutParams
MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
//子view占据的宽度
int childWidth=child.getMeasuredWidth()+lp.leftMargin+lp.rightMargin;
//子view占据的高度
int childHeight=child.getMeasuredHeight()+lp.topMargin+lp.bottomMargin;
//换行
if (lineWidth+childWidth>sizeWidth-getPaddingLeft()-getPaddingRight())
{
//对比得到最大的宽度
width= Math.max(width,lineWidth);
//重置lineWidth
lineWidth=childWidth;
//记录行高
height+=lineHeight;
lineHeight=childHeight;
}
else
{
//叠加行宽
lineWidth+=childWidth;
//得到当前行最大的高度
lineHeight=Math.max(lineHeight,childHeight);
}
//如果是最后一个控件
if (i==cCount-1)
{
width=Math.max(width,lineWidth);
height+=lineHeight;
}
}
setMeasuredDimension(modeWidth==MeasureSpec.EXACTLY?sizeWidth:width+getPaddingLeft()+getPaddingRight(),
modeHeight==MeasureSpec.EXACTLY?sizeHeight:height+getPaddingBottom()+getPaddingTop());
//super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
//清除数据,因为会重复调用
mAllViews.clear();
mLineHeight.clear();
//当前viewgroup的宽度
int width=getWidth();
int lineWidth=0;
int lineHeight=0;
List<View> lineViews=new ArrayList<>();
int cCount=getChildCount();
for (int i = 0; i < cCount; i++) {
View child = getChildAt(i);
MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
int childWidth=child.getMeasuredWidth();
int childHeight=child.getMeasuredHeight();
//如果需要换行
if (childWidth+lp.leftMargin+lp.rightMargin+lineWidth>width)
{
//记录lineHeight
mLineHeight.add(lineHeight);
//记录当期的views
mAllViews.add(lineViews);
//重置我们的行宽和行高
lineWidth=0;
lineHeight=childHeight+lp.topMargin+lp.bottomMargin;
//重置我们的view集合
lineViews=new ArrayList<>();
}
lineWidth+=childWidth+lp.leftMargin+lp.rightMargin;
lineHeight=Math.max(lineHeight,childHeight+lp.topMargin+lp.bottomMargin);
lineViews.add(child);
}
//处理最后一行
mLineHeight.add(lineHeight);
mAllViews.add(lineViews);
//设置子view的位置
int left=getPaddingLeft();
int top=getPaddingTop();
//行数
int lineNum=mAllViews.size();
for (int i = 0; i < lineNum; i++) {
lineViews=mAllViews.get(i);
lineHeight = mLineHeight.get(i);
for (int j = 0; j < lineViews.size(); j++) {
View child = lineViews.get(j);
//判断child的状态
if (child.getVisibility()==GONE)
{
continue;
}
MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
int lc=left+lp.leftMargin;
int tc=top+lp.topMargin;
int rc=lc+child.getMeasuredWidth();
int bc=tc+child.getMeasuredHeight();
//为子view进行布局
child.layout(lc,tc,rc,bc);
left+=child.getMeasuredWidth()+lp.leftMargin+lp.rightMargin;
}
left=getPaddingLeft();
top+=lineHeight;
}
}
//与当前viewgroup对应的layoutParams
@Override
public LayoutParams generateLayoutParams(AttributeSet attrs) {
return new MarginLayoutParams(getContext(),attrs);
}
}
presneter:
package com.example.moni.presenter;
public interface PhonePresenter {
//解绑
void onDestroy();
}
package com.example.moni.presenter;
import com.example.moni.ShoppingActivity;
import com.example.moni.bean.PhoneBean;
import com.example.moni.model.PhoneModel;
import com.example.moni.model.PhoneModelImpl;
import com.example.moni.view.ShoppingView;
public class PhonePresenterimpl implements PhonePresenter {
public ShoppingView shoppingView;
private PhoneModelImpl phoneModel;
public PhonePresenterimpl(ShoppingView shoppingView) {
this.shoppingView=shoppingView;
this.phoneModel = new PhoneModelImpl();
}
public void getData(int page,int sort){
phoneModel.getData(new PhoneModel() {
@Override
public void onSucsess(PhoneBean phoneBean, int page, int sort) {
shoppingView.onSuccess(phoneBean);
}
@Override
public void onError(int code) {
shoppingView.onError(1);
}
},page,sort);
}
//解绑
@Override
public void onDestroy() {
if(shoppingView!=null){
shoppingView=null;
}
}
}
Model:
package com.example.moni.model;
import com.example.moni.bean.PhoneBean;
public interface PhoneModel {
//成功的方法
void onSucsess(PhoneBean phoneBean,int page,int sort);
//失败的方法
void onError(int code);
}
package com.example.moni.model;
import android.util.Log;
import com.example.moni.bean.PhoneBean;
import com.google.gson.Gson;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class PhoneModelImpl {
public void getData(final PhoneModel phoneModel, final int page, final int sort){
String url="http://www.zhaoapi.cn/product/searchProducts?keywords=%E6%89%8B%E6%9C%BA&page="+page+"&sort="+sort+"";
//创建okhttp对象
OkHttpClient okHttpClient=new OkHttpClient
.Builder()
.build();
//创建request对象
Request request = new Request
.Builder()
.url(url)
.build();
//执行
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
phoneModel.onError(1);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String str = response.body().string();
Log.i("aaa",str.toString());
Gson gson=new Gson();
PhoneBean phoneBean = gson.fromJson(str, PhoneBean.class);
//调用成功的方法
phoneModel.onSucsess(phoneBean,page,sort);
}
});
}
}
//适配器:
package com.example.moni.adapter;
import android.content.Context;
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.RelativeLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.moni.R;
import com.example.moni.bean.PhoneBean;
import java.util.List;
public class PhoneAdapter extends RecyclerView.Adapter<PhoneAdapter.ViewHolder>{
private Context context;
private List<PhoneBean.DataBean> dataBeanList;
private View view;
public PhoneAdapter(Context context, List<PhoneBean.DataBean> dataBeanList) {
this.context = context;
this.dataBeanList = dataBeanList;
}
@NonNull
@Override
public PhoneAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
view = LayoutInflater.from(context).inflate(R.layout.phonelist, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull PhoneAdapter.ViewHolder holder, final int position) {
holder.price.setText("¥"+dataBeanList.get(position).getPrice());
holder.sale.setText(dataBeanList.get(position).getSalenum()+"销量");
holder.title.setText(dataBeanList.get(position).getTitle());
String path = dataBeanList.get(position).getImages().split("\\|")[0];
Glide.with(context).load(path).into(holder.ion);
if(callback!=null){
holder.relate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
callback.onItemClick(position);
}
});
}
}
@Override
public int getItemCount() {
return dataBeanList.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
private ImageView ion;
private TextView title;
private TextView price;
private TextView sale;
private RelativeLayout relate;
public ViewHolder(View itemView) {
super(itemView);
ion = itemView.findViewById(R.id.ion);
title = itemView.findViewById(R.id.phone_title);
price = itemView.findViewById(R.id.price);
sale = itemView.findViewById(R.id.sale);
relate = itemView.findViewById(R.id.relate);
}
}
public interface onItemCilck{
void onItemClick(int position);
}
public onItemCilck callback;
public void setCallback(onItemCilck callback) {
this.callback = callback;
}
}
9万+

被折叠的 条评论
为什么被折叠?



