mvp+okhttp+线性布局和网格布局切换 和点击商品传参跳转到详情页面 顶部为轮播图 使用banner的写法

适配器里面

package com.example.weizhiyuan20181217;

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.LinearLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.ArrayList;
import java.util.List;

public class ContentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

private List<UserBean.DataBean> mlist;
private Context mContext;
public boolean mflag;

public ContentAdapter(Context context,Boolean flag){
    this.mContext = context;
    mflag = flag;
    mlist = new ArrayList<>();
}

public void setMlist(List<UserBean.DataBean> list) {
    mlist.clear();
    if(list!=null)
    {
        mlist.addAll(list);
    }
    notifyDataSetChanged();
}

public void addMlist(List<UserBean.DataBean> list) {

    if(list!=null)
    {
        mlist.addAll(list);
    }
    notifyDataSetChanged();
}



class ViewHolder extends RecyclerView.ViewHolder {

    private ImageView icon;
    private TextView title,price,data;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        icon = itemView.findViewById(R.id.icon);
        title = itemView.findViewById(R.id.title);
        price = itemView.findViewById(R.id.price);
        data = itemView.findViewById(R.id.data);
    }
}

public int getPid(int position){

    return mlist.get(position).getPid();
}


@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

    RecyclerView.ViewHolder holder = null;

    if(mflag =true)
    {
        View view  = LayoutInflater.from(mContext).inflate(R.layout.item_one,viewGroup,false);
        holder = new ViewHolder(view);
    }else{
        View view  = LayoutInflater.from(mContext).inflate(R.layout.item_one,viewGroup,false);
        holder = new ViewHolder(view);
    }
    return holder;
}

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
    ViewHolder holder= (ViewHolder) viewHolder;

    holder.title.setText(mlist.get(i).getTitle());
    holder.price.setText(mlist.get(i).getBargainPrice()+"");
    holder.data.setText(mlist.get(i).getCreatetime());

    String R = "";
    int K = mlist.get(i).getImages().length();

    for(int j=0;j<K;j++)
    {
        if(mlist.get(i).getImages().substring(j,j+1).equals("|"))
        {
            R = mlist.get(i).getImages().substring(j+1,K).trim();
        }
    }
    Glide.with(mContext).load(R).into(holder.icon);

    holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            if(mOnClick!=null)
            {
                mOnClick.OnItemClick(i);
            }
            return true;
        }
    });

    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(mDelClick!=null)
            {
               // int pid = mlist.get(i).getPid();
                mDelClick.OnItemLong(i);
            }
        }
    });
}
public void remove(int position){
    mlist.remove(position);

    notifyDataSetChanged();
}

@Override
public int getItemCount() {
    return mlist.size();
}

OnClick mOnClick;
DelClick mDelClick;
public void setOnClick(OnClick onClick){
    this.mOnClick = onClick;
}

public interface OnClick{
    void OnItemClick(int position);
}

public void setmDelClick(DelClick delClick){
    this.mDelClick = delClick;
}

public interface DelClick{
    void OnItemLong(int position);
}

}

商品页面点击可以切换线性布局和网格布局

package com.example.weizhiyuan20181217;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity implements IView,View.OnClickListener {

private XRecyclerView contents;
private ContentAdapter adapter;
private int page;
private boolean flag = true;
private String url = "http://www.zhaoapi.cn/product/searchProducts";
private IPersenter mPersneter;
private List<UserBean.DataBean> databean = new ArrayList<>();
private Button button;
private LinearLayoutManager linearmanager;
private GridLayoutManager gridLayoutManager;
private EditText edit_input;
private TextView start;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //加载资源id
    initView();
    //加载视图
    initData();
    //开始
    initContents();
    //默认Wie第一页
    page = 1;
    //分割线
    initDonghua();
    //点击搜索
    initDianJi();
}

private void initDianJi() {
    start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startRequest();
            page=1;
        }
    });

    //删除
    adapter.setOnClick(new ContentAdapter.OnClick() {
        @Override
        public void OnItemClick(int position) {
            adapter.remove(position);
        }
    });

    //跳转
    adapter.setmDelClick(new ContentAdapter.DelClick() {
        @Override
        public void OnItemLong(int position) {

            int pid = adapter.getPid(position);
            Intent intent=new Intent(MainActivity.this,ShappIngActivity.class);
            intent.putExtra("pid",pid+"");
            startActivity(intent);
        }
    });
}

private void initDonghua() {
    DividerItemDecoration decoration = new DividerItemDecoration(this,OrientationHelper.VERTICAL);
    contents.addItemDecoration(decoration);
}

private void initData() {

    linearmanager = new LinearLayoutManager(this);
    linearmanager.setOrientation(OrientationHelper.VERTICAL);
    //默认显示为线性布局
    gridLayoutManager = new GridLayoutManager(this,2);
    gridLayoutManager.setOrientation(OrientationHelper.VERTICAL);
    contents.setLayoutManager(linearmanager);
}

private void initView() {
    contents = findViewById(R.id.contents);
    edit_input = findViewById(R.id.edit_input);
    adapter = new ContentAdapter(this,flag);
    contents.setAdapter(adapter);
    start = findViewById(R.id.jiantou);
    mPersneter = new IPersenter(this);
    button = findViewById(R.id.play);
    button.setOnClickListener(this);
}

private void initContents() {
    contents.setPullRefreshEnabled(true);
    contents.setLoadingMoreEnabled(true);

    contents.setLoadingListener(new XRecyclerView.LoadingListener() {
        @Override
        public void onRefresh() {
            page =1;
            startRequest();
        }
        @Override
        public void onLoadMore() {
            startRequest();
        }
    });
}

private void startRequest() {

    Map<String,String> map = new HashMap<>();
    map.put("keywords",edit_input.getText().toString());
    map.put("page",page+"");
    mPersneter.requestData(url,map,UserBean.class);
}

@Override
public void onClick(View v){
    switch (v.getId())
    {
        case R.id.play:
            flag=!flag;
            adapter = new ContentAdapter(this,flag);
            if(flag)
            {
                contents.setLayoutManager(gridLayoutManager);
            }else{
                contents.setLayoutManager(linearmanager);
            }
            adapter.setMlist(databean);
            break;
    }
}

@Override
public void showRequest(Object data) {
    UserBean user = (UserBean) data;
    if(page==1)
    {
        databean.clear();
        adapter.setMlist(user.getData());
    }else{
        adapter.addMlist(user.getData());
    }
    page++;
    databean.addAll(user.getData());
    contents.loadMoreComplete();
    contents.refreshComplete();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mPersneter.OnDistory();
}

}

package com.example.weizhiyuan20181217;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.loader.ImageLoaderInterface;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cn.jpush.a.d;
public class ShappIngActivity extends AppCompatActivity implements IView{

private Banner mBanner;
private TextView title,price;
private String url = "http://www.zhaoapi.cn/product/getProductDetail";
private IPersenter mPersenter;
private String pid;
private ShappBean data1;
private List<String> strings;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_activity);

    mBanner = findViewById(R.id.mbanner);
    title = findViewById(R.id.title);
    price = findViewById(R.id.price);
    Intent intent = getIntent();
    pid = intent.getStringExtra("pid");
    strings = new ArrayList<>();
    mPersenter = new IPersenter(this);
    Map<String,String> map = new HashMap<>();
    map.put("pid",pid);
    mPersenter.requestData(url,map,ShappBean.class);
    mBanner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);
    mBanner.setImageLoader(new ImageLoaderInterface<ImageView>() {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {

            String R = "";
            int K = data1.getData().getImages().length();
            for(int i=0;i<K;i++)
            {
                if(data1.getData().getImages().substring(i,i+1).equals("|"))
                {
                    R = data1.getData().getImages().substring(i+1,K).trim();
                }
            }
            Glide.with(context).load(R).into(imageView);
        }
        @Override
        public ImageView createImageView(Context context) {

            ImageView imageView = new ImageView(context);
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            return imageView;
        }
    });
}

@Override
public void showRequest(Object data) {
    if(data instanceof ShappBean){
         data1 = (ShappBean) data;
        String R = "";
        int K = data1.getData().getImages().length();
        for(int i=0;i<K;i++)
        {
            if(data1.getData().getImages().substring(i,i+1).equals("|"))
            {
                R = data1.getData().getImages().substring(i+1,K).trim();
            }
        }
        strings.add(R);
        mBanner.setImages(strings);
        Log.i("TTT",strings.size()+"");
        title.setText(data1.getData().getTitle());
        price.setText(data1.getData().getBargainPrice()+"");
        mBanner.start();
    }
}

}

猜你喜欢

转载自blog.csdn.net/qq_42960779/article/details/85112997