MainActivity
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.HashMap;
import java.util.Map;
import asus.com.bwie.week3_2.adapter.GridAdapter;
import asus.com.bwie.week3_2.adapter.LinearAdapter;
import asus.com.bwie.week3_2.model.Products;
import asus.com.bwie.week3_2.presenter.IpresenterImpl;
import asus.com.bwie.week3_2.view.Iview;
public class MainActivity extends AppCompatActivity implements View.OnClickListener,Iview {
private XRecyclerView recyclerView;
private IpresenterImpl ipresenter;
private LinearAdapter linearAdapter;
private String url="http://www.zhaoapi.cn/product/searchProducts";
private int mpage;
private int mSpanCount=2;
private Map<String, String> map;
private boolean isLinear=true;
private LinearLayoutManager linearLayoutManager;
private GridLayoutManager gridLayoutManager;
private Button price,synthesize,sales;
private GridAdapter gridAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = new HashMap<>();
mpage=1;
initView();
recyclerView.setLoadingMoreEnabled(true);
recyclerView.setPullRefreshEnabled(true);
recyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
mpage=1;
requestData();
}
@Override
public void onLoadMore() {
requestData();
}
});
isLayoutManager();
linearAdapter.setOnClickListenter(new LinearAdapter.ClickListenter() {
@Override
public void onClick(int position) {
int pid = linearAdapter.getPid(position);
Intent intent=new Intent(MainActivity.this,TwoActivity.class);
intent.putExtra("pid",pid+"");
startActivity(intent);
}
});
}
private void initView() {
recyclerView=findViewById(R.id.recycler_linear);
findViewById(R.id.change).setOnClickListener(this);
findViewById(R.id.synthesize).setOnClickListener(this);
findViewById(R.id.sales).setOnClickListener(this);
findViewById(R.id.price).setOnClickListener(this);
findViewById(R.id.search).setOnClickListener(this);
price=findViewById(R.id.price);
synthesize=findViewById(R.id.synthesize);
sales=findViewById(R.id.sales);
ipresenter=new IpresenterImpl(this);
}
public void requestData(){
map.clear();
map.put("keywords","手机");
map.put("page",mpage+"");
ipresenter.startReuqest(url,map,Products.class);
}
public void requestData(int i){
map.clear();
map.put("keywords","手机");
map.put("page",mpage+"");
map.put("sort",i+"");
ipresenter.startReuqest(url,map,Products.class);
}
public void isLayoutManager(){
if(isLinear){
linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
findViewById(R.id.change).setBackgroundResource(R.drawable.grid);
}else{
gridLayoutManager = new GridLayoutManager(this,mSpanCount);
recyclerView.setLayoutManager(gridLayoutManager);
findViewById(R.id.change).setBackgroundResource(R.drawable.linear);
}
linearAdapter=new LinearAdapter(this,isLinear);
recyclerView.setAdapter(linearAdapter);
isLinear=!isLinear;
mpage=1;
requestData();
}
@Override
public void onClick(View v) {
int id=v.getId();
switch (id){
case R.id.change:
isLayoutManager();
break;
case R.id.synthesize:
synthesize.setTextColor(Color.RED);
sales.setTextColor(Color.BLACK);
price.setTextColor(Color.BLACK);
mpage = 1;
requestData(0);
break;
case R.id.sales:
synthesize.setTextColor(Color.BLACK);
sales.setTextColor(Color.RED);
price.setTextColor(Color.BLACK);
mpage = 1;
requestData(1);
break;
case R.id.price:
synthesize.setTextColor(Color.BLACK);
sales.setTextColor(Color.BLACK);
price.setTextColor(Color.RED);
mpage = 1;
requestData(2);
break;
default:break;
}
}
@Override
public void onSuccessData(Object data) {
if(data instanceof Products){
Products products= (Products) data;
if(mpage==1){
linearAdapter.setMlist(products.getData());
}else{
linearAdapter.addMlist(products.getData());
}
}
mpage++;
recyclerView.loadMoreComplete();
recyclerView.refreshComplete();
}
@Override
public void onFailData(Exception e) {
Log.i("TAG",e.getLocalizedMessage());
}
}
TwoActivity
import android.content.Context;
import android.content.Intent;
import android.graphics.Paint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.youth.banner.Banner;
import com.youth.banner.loader.ImageLoaderInterface;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import asus.com.bwie.week3_2.model.Shops;
import asus.com.bwie.week3_2.presenter.IpresenterImpl;
import asus.com.bwie.week3_2.view.Iview;
public class TwoActivity extends AppCompatActivity implements Iview {
private int pid;
private Banner banner;
private TextView title,price,barginprice;
private IpresenterImpl ipresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
banner = findViewById(R.id.banner);
title=findViewById(R.id.title);
price=findViewById(R.id.price);
ipresenter= new IpresenterImpl(this);
barginprice=findViewById(R.id.barginprice);
Intent intent=getIntent();
final String pids = intent.getStringExtra("pid");
banner.setImageLoader(new ImageLoaderInterface<ImageView>() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
@Override
public ImageView createImageView(Context context) {
ImageView imageView=new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
return imageView;
}
});
Map<String,String> map=new HashMap<>();
map.put("pid",pids);
ipresenter.startReuqest("http://www.zhaoapi.cn/product/getProductDetail",map,Shops.class);
}
@Override
public void onSuccessData(Object data) {
List<String> list=new ArrayList<>();
Shops goods= (Shops) data;
String[] split = goods.getData().getImages().split("\\|");
for(int i=0;i<split.length;i++){
list.add(split[i]);
}
banner.setImages(list);
banner.start();
barginprice.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
price.setText("¥"+goods.getData().getPrice()+"");
title.setPaintFlags(Paint.FAKE_BOLD_TEXT_FLAG);
title.setText(goods.getData().getTitle());
barginprice.setText("¥"+goods.getData().getBargainPrice()+"");
}
@Override
public void onFailData(Exception e) {
}
}
适配器
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.text.TextPaint;
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 java.util.ArrayList;
import java.util.List;
import asus.com.bwie.week3_2.R;
import asus.com.bwie.week3_2.model.Products;
public class LinearAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Products.DataBean> mlist;
private Context context;
private boolean isLinear;
public LinearAdapter(Context context, boolean isLinear) {
this.context = context;
this.isLinear=isLinear;
mlist=new ArrayList<>();
}
public int getPid(int position){
return mlist.get(position).getPid();
}
public void setMlist(List<Products.DataBean> mlist) {
this.mlist = mlist;
notifyDataSetChanged();
}
public void addMlist(List<Products.DataBean> mlist) {
this.mlist.addAll(mlist);
notifyDataSetChanged();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
if(isLinear){
View view=LayoutInflater.from(context).inflate(R.layout.recycler_linear,viewGroup,false);
return new ViewHolder(view);
}else{
View view=LayoutInflater.from(context).inflate(R.layout.recycler_grid,viewGroup,false);
return new ViewHolder(view);
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
ViewHolder holder= (ViewHolder) viewHolder;
Products.DataBean bean=mlist.get(i);
String[] split = bean.getImages().split("\\|");
Glide.with(context).load(split[0]).into(holder.imageView);
holder.title.setText(bean.getTitle());
holder.price.setText("¥"+bean.getPrice());
holder.salenum.setText("已售"+bean.getSalenum()+"件");
holder.relativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(listenter!=null){
listenter.onClick(i);
}
}
});
}
@Override
public int getItemCount() {
return mlist.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private ImageView imageView;
private TextView title;
private TextView price;
private TextView salenum;
private RelativeLayout relativeLayout;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.linear_image);
title=itemView.findViewById(R.id.linear_title);
price=itemView.findViewById(R.id.linear_bargainPrice);
salenum=itemView.findViewById(R.id.linear_salenum);
relativeLayout=itemView.findViewById(R.id.linear);
TextPaint paint = title.getPaint();
paint.setFakeBoldText(true);
}
}
public ClickListenter listenter;
public void setOnClickListenter(ClickListenter clickListenter){
listenter=clickListenter;
}
public interface ClickListenter{
void onClick(int position);
}
}
布局
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/search"
android:layout_width="50dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/sort"
app:layout_constraintRight_toLeftOf="@+id/search_text"
android:background="@drawable/search"
/>
<EditText
android:id="@+id/search_text"
app:layout_constraintLeft_toRightOf="@+id/search"
android:layout_width="0dp"
android:hint="点击搜索:手机"
app:layout_constraintRight_toLeftOf="@+id/change"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/change"
app:layout_constraintLeft_toRightOf="@+id/search_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/grid"
app:layout_constraintRight_toRightOf="parent"
/>
<LinearLayout
android:id="@+id/sort"
app:layout_constraintTop_toBottomOf="@+id/search_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/synthesize"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="综合"
/>
<Button
android:id="@+id/sales"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="销量"
/>
<Button
android:id="@+id/price"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="价格"
/>
<Button
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="筛选"
/>
</LinearLayout>
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/recycler_linear"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/sort"
/>
</android.support.constraint.ConstraintLayout>
//grid
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linear"
>
<ImageView
android:id="@+id/linear_image"
android:layout_width="300dp"
android:layout_height="400dp" />
<TextView
android:id="@+id/linear_title"
android:maxLines="1"
android:ellipsize="end"
android:layout_marginTop="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_below="@+id/linear_image"
/>
<TextView
android:id="@+id/linear_bargainPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:textColor="#f00"
android:textSize="16sp"
android:gravity="center"
android:layout_below="@+id/linear_title"
/>
<TextView
android:id="@+id/linear_salenum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_below="@id/linear_bargainPrice"
android:layout_marginTop="5dp"
/>
</RelativeLayout>
//linear
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:id="@+id/linear"
>
<ImageView
android:id="@+id/linear_image"
android:layout_width="150dp"
android:layout_height="200dp" />
<TextView
android:id="@+id/linear_title"
android:layout_marginTop="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_toRightOf="@+id/linear_image"
/>
<TextView
android:id="@+id/linear_bargainPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_toRightOf="@+id/linear_image"
android:layout_below="@+id/linear_title"
android:textColor="#f00"
android:textSize="24sp"
/>
<TextView
android:id="@+id/linear_salenum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_toRightOf="@+id/linear_image"
android:layout_below="@+id/linear_bargainPrice"
/>
</RelativeLayout>
//two
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TwoActivity">
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="500dp"
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:id="@+id/title"
android:textSize="24sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/banner"
/>
<TextView
android:id="@+id/barginprice"
android:textSize="20sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/title"
/>
<TextView
android:id="@+id/price"
android:textSize="24sp"
android:textColor="#fc0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/barginprice"
/>
</android.support.constraint.ConstraintLayout>