使用butterknife实现搜索切换列表

activity_practice

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="com.bwie.test.practicetest_demo.PracticeActivity">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:id="@+id/relative01">
        <TextView
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="21sp"
            android:text="搜索商品" />

        <ImageView
            android:background="@drawable/kind_grid"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="10dp"
            android:layout_height="35dp"
            android:layout_width="35dp"
            android:id="@+id/grid_icon" />
    </RelativeLayout>

    <View
        android:id="@+id/view01"
        android:background="#000"
        android:layout_height="1dp"
        android:visibility="visible"
        android:layout_width="match_parent"
        android:layout_below="@+id/relative01"></View>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_below="@+id/view01"
        android:layout_height="50dp"
        android:id="@+id/relative02">
        <EditText
            android:layout_centerVertical="true"
            android:layout_height="wrap_content"
            android:layout_marginLeft="38dp"
            android:layout_width="218dp"
            android:id="@+id/editWords"
            android:hint="请输入关键词"
            android:textSize="21sp" />

        <Button
            android:text="搜索"
            android:id="@+id/find"
            android:layout_marginRight="38dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"/>
    </RelativeLayout>

    <View
        android:id="@+id/view02"
        android:background="#000"
        android:visibility="visible"
        android:layout_height="1dp"
        android:layout_width="match_parent"
        android:layout_below="@+id/relative02">
    </View>

    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/xRecyclerView"
        android:layout_below="@+id/view02"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </com.jcodecraeer.xrecyclerview.XRecyclerView>
</RelativeLayout>

item

<?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"
    android:orientation="horizontal"
    android:padding="5dp">
    <ImageView
        android:id="@+id/image"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@mipmap/ic_launcher"/>

    <LinearLayout
        android:layout_height="100dp"
        android:orientation="vertical"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:layout_width="match_parent"  >
        <TextView
            android:id="@+id/title"
            android:layout_weight="1"
            android:layout_height="0dp"
            android:layout_width="wrap_content"/>
        <TextView
            android:id="@+id/price"
            android:layout_weight="1"
            android:layout_height="0dp"
            android:layout_width="wrap_content"/>
    </LinearLayout>
</LinearLayout>

使用的依赖以及在app添加的true代码

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<application
    android:name="com.bwie.test.util.BaseApplication"

defaultConfig {
    javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
}

//compile 'com.jakewharton:butterknife:8.5.1'
compile 'com.jakewharton:butterknife:7.0.0'
compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.squareup.okio:okio:1.11.0'
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
implementation files('libs/gson-2.8.0.jar')
implementation files('libs/universal-image-loader-1.9.3.jar')

PracticeActivity

import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

import com.bwie.test.adapter.MyAdapter;
import com.bwie.test.bean.ProductsBean;
import com.bwie.test.presenter.DataPresenter;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class PracticeActivity extends AppCompatActivity implements DataView{
    @Bind(R.id.grid_icon)
    ImageView gridIcon;
    @Bind(R.id.find)
    Button find;
    @Bind(R.id.xRecyclerView)
    XRecyclerView xRecyclerView;
    @Bind(R.id.editWords)
    EditText editWords;
    private int num = 1;    //判断变量改变布局
    private int page = 1;   //初始化页数数据
    private MyAdapter adapter;
    private Handler handler = new Handler();
    private DataPresenter dataPresenter = new DataPresenter(this,this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_practice);
        //隐藏原有标题
        getSupportActionBar().hide();

        ButterKnife.bind(this);

        dataPresenter.getData("笔记本","1");
    }
    //view 层 的方法 用来更新ui
    @Override
    public void showView(ProductsBean productsBean) {

        //设置线性布局管理器,加载数据
        if (num % 2 == 1) {
            //设置线性布局管理器,加载数据
            LinearLayoutManager layoutManager = new LinearLayoutManager(PracticeActivity.this, 
                                      LinearLayoutManager.VERTICAL, false);
            xRecyclerView.setLayoutManager(layoutManager);
            gridIcon.setBackgroundResource(R.drawable.kind_grid);
        }
        //设置布局适配器,,,线性布局管理器,加载数据
        adapter = new MyAdapter(PracticeActivity.this,  productsBean);
        xRecyclerView.setAdapter(adapter);

        //XRecyclerview的上拉下拉方法
        xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //在子线程内上拉刷新数据
                        dataPresenter.getData(editWords.getText().toString(),"1");
                        adapter.notifyDataSetChanged();
                        xRecyclerView.refreshComplete();
                    }
                },800);
            }

            @Override
            public void onLoadMore() {
                //在子线程内下拉加载数据
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        page++;
                        dataPresenter.getData(editWords.getText().toString(),page+"");
                        adapter.notifyDataSetChanged();
                        xRecyclerView.loadMoreComplete();
                    }
                },800);
            }
        });
    }

    @OnClick({R.id.grid_icon, R.id.find})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.grid_icon:
                //根据num变量是奇数还是偶数来判断加载哪种布局,并返回对应布局的图片
                num++;
                if (num % 2 == 0) {
                    //设置网格布局管理器,加载数据
                    GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
                    xRecyclerView.setLayoutManager(layoutManager);
                    gridIcon.setBackgroundResource(R.drawable.kind_grid);
                }
                if (num % 2 == 1) {
                    //设置线性布局管理器,加载数据
                    LinearLayoutManager layoutManager = new LinearLayoutManager(PracticeActivity.this, 
                                     LinearLayoutManager.VERTICAL, false);
                    xRecyclerView.setLayoutManager(layoutManager);
                    gridIcon.setBackgroundResource(R.drawable.kind_liner);
                }
                break;
            case R.id.find:
                //点击搜索按钮时触发presenter的获取数据方法
                dataPresenter.getData(editWords.getText().toString(),"1");
                break;
            default:
                break;
        }
    }

    //实现presenter内部的防止内存溢出方法
    @Override
    protected void onDestroy() {
        super.onDestroy();
        dataPresenter.destory();
    }
}

DataView

import com.bwie.test.bean.ProductsBean;

public interface DataView {
    public void showView(ProductsBean productsBean);
}

adapter文件夹下MyAdapter

import android.content.Context;
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.TextView;

import butterknife.Bind;
import butterknife.ButterKnife;

import com.bwie.test.bean.ProductsBean;
import com.bwie.test.practicetest_demo.R;
import com.bwie.test.util.ImageLoaderUtil;
import com.nostra13.universalimageloader.core.ImageLoader;

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
    private Context context;
    private ProductsBean productsBean;

    public MyAdapter(Context context, ProductsBean productsBean) {
        this.context = context;
        this.productsBean = productsBean;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item, null);
        return new ItemViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        ItemViewHolder viewHolder = (ItemViewHolder) holder;
        viewHolder.title.setText("标题: "+productsBean.getData().get(position).getTitle() );
        viewHolder.price.setText("价格: "+productsBean.getData().get(position).getPrice() );
        String images = productsBean.getData().get(position).getImages();
        String[] split = images.split("\\|");

        //使用Glide加载图片容易闪烁,错位,效果不如imageloader好
        //Glide.with(context).load(split[0]).into(viewHolder.image);
        ImageLoader.getInstance().displayImage(split[0], viewHolder.image, 
                                            ImageLoaderUtil.getDefaultOption());
    }

    @Override
    public int getItemCount() {
        return productsBean.getData() == null ? 0 : productsBean.getData().size();
    }

    static class ItemViewHolder extends RecyclerView.ViewHolder {
        @Bind(R.id.image)
        ImageView image;
        @Bind(R.id.title)
        TextView title;
        @Bind(R.id.price)
        TextView price;
        public ItemViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
        }
    }
}

model文件夹下SearchModel

public interface SearchModel {
    public void getData(String keywords, String page, okhttp3.Callback callback);
}

MyDataModel

import com.bwie.test.util.OkHttp3Utils;
import okhttp3.Callback;

public class MyDataModel {

    public void getData(String keywords, String page, Callback callback ) {
        OkHttp3Utils.doGet("http://120.27.23.105/product/searchProducts?keywords=" + keywords
                + "&page=" + page + "&source=android", callback);
    }
}

presenter文件夹下Datapresenter

import android.content.Context;
import android.util.Log;

import com.bwie.test.bean.ProductsBean;
import com.bwie.test.model.MyDataModel;
import com.bwie.test.practicetest_demo.DataView;
import com.bwie.test.util.OnUiCallback;
import com.google.gson.Gson;

import java.io.IOException;
import okhttp3.Call;

public class DataPresenter {
    Context context;
    private DataView dataView;
    private MyDataModel dataModel;
    //构造方法中声明view层,初始化model层数据,将 mvp三层关联
    public DataPresenter(Context context, DataView dataView) {
        this.context = context;
        this.dataView = dataView;
        dataModel = new MyDataModel();
    }

    //调用model层接口,上拉加载下拉刷新
    public void getData(String keyword,String page){
        dataModel.getData(keyword, page, new OnUiCallback() {
            @Override
            public void onFailed(Call call, IOException e) {
                //数据获取//失败方法
            }

            @Override
            public void onSuccess(String result) {
                //获取数据成功时将放回的json 变成bean
                Log.i("返回数据", "结果: "+result.toString());
                ProductsBean bean = new Gson().fromJson(result, ProductsBean.class);
                dataView.showView(bean);
            }
        });
    }

    //用来防止内存溢出
    public void destory(){
        this.dataView = null;
    }
}

util文件夹下BaseApplication

import android.app.Application;

public class BaseApplication extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        //配置ImageLoader
        ImageLoaderUtil.init(this);
    }
}

ImageLoaderUtil

import android.content.Context;
import android.graphics.Bitmap;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;

import com.bwie.test.practicetest_demo.R;
import java.io.File;

public class ImageLoaderUtil {
    /**
     * 初始化imageLoader
     * @param context
     */
    public static void init(Context context) {
        //1.获取配置config对象
        File cacheDir = StorageUtils.getCacheDirectory(context);  //缓存文件夹路径

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                .threadPoolSize(3) // default  线程池内加载的数量
                .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
                .tasksProcessingOrder(QueueProcessingType.FIFO) // default
                .denyCacheImageMultipleSizesInMemory()
                .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现
                .memoryCacheSize(2 * 1024 * 1024)  // 内存缓存的最大值
                .memoryCacheSizePercentage(13) // default
                .diskCache(new UnlimitedDiscCache(cacheDir)) // default 可以自定义缓存路径
                .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值
                .diskCacheFileCount(100)  // 可以缓存的文件数量              
                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
                .imageDownloader(new BaseImageDownloader(context)) // default
                .imageDecoder(new BaseImageDecoder(true)) // default
                .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
                .writeDebugLogs() // 打印debug log
                .build(); //开始构建


        //2.初始化配置...ImageLoader.getInstance()图片加载器的对象,单例模式
        ImageLoader.getInstance().init(config);
    }

    /**
     * imageLoader加载图片的默认选项
     * @return
     */
    public static DisplayImageOptions getDefaultOption(){
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的默认图片
                .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片
                .resetViewBeforeLoading(true)  // default 设置图片在加载前是否重置、复位
                .delayBeforeLoading(1000)  // 下载前的延迟时间
                .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中
                .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中

                .considerExifParams(true) // default
                .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
                .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型

                .displayer(new SimpleBitmapDisplayer())
                .build();

        return options;
    }

    /**
     * imageLoader加载圆角图片....指定圆角的大小
     * @return
     */
    public static DisplayImageOptions getRoundedOption(int corner){
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片
                .resetViewBeforeLoading(true)  // default 设置图片在加载前是否重置、复位
                .delayBeforeLoading(1000)  // 下载前的延迟时间
                .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中
                .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中

                .considerExifParams(true) // default
                .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) 
                .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型
                .displayer(new RoundedBitmapDisplayer(corner))
                .build();

        return options;
    }
}

LoggingInterceptor

import java.io.IOException;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;

public class LoggingInterceptor implements Interceptor {

    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();

        long t1 = System.nanoTime();
//    logger.info(String.format("Sending request %s on %s%n%s",
//        request.url(), chain.connection(), request.headers()));

        Response response = chain.proceed(request);

        long t2 = System.nanoTime();
//    logger.info(String.format("Received response for %s in %.1fms%n%s",
//        response.request().url(), (t2 - t1) / 1e6d, response.headers()));

        System.out.println("t2 = " + (t2-t1));
        return response;
    }
}

OkHttp3Utils

import android.util.Log;
import java.io.File;
import java.io.IOException;
import java.util.Map;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class OkHttp3Utils {
    private static OkHttpClient okHttpClient = null;

    public OkHttp3Utils() {
    }

    private static OkHttpClient getOkHttpClient() {
        synchronized (OkHttp3Utils.class) {
            if (okHttpClient == null) {
                okHttpClient = new OkHttpClient();
            }
        }
        return okHttpClient;
    }

    //上传文件
    public static void loadFile(String url, File file, String fileName){
        OkHttpClient okHttpClient = getOkHttpClient();
        //设置文件类型
        RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"),file);
        //设置请求体
        RequestBody body = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("image",fileName,requestBody)
                .build();
        //请求方式
        Request request = new Request.Builder().url(url).post(body).build();

        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.i("成功","成功");
            }
        });
    }

    /**
     * 1.接口地址
     * 2.接口回调
     */
    public static void doGet(String url,Callback callback){
        OkHttpClient okHttpClient = getOkHttpClient();
        Request request = new Request.Builder().url(url).build();
        okHttpClient.newCall(request).enqueue(callback);
    }

    /**
     * 1.地址
     * 2.接口回调
     * 3.请求体
     */
    public static void doPost(String url, Map<String,String> map, Callback callback){
        OkHttpClient okHttpClient = getOkHttpClient();
        FormBody.Builder builder = new FormBody.Builder();
        //遍历map集合   设置请求体
        for (String mapKey : map.keySet()){
            builder.add(mapKey,map.get(mapKey));
        }
        //设置请求方式
        Request request = new Request.Builder().url(url).post(builder.build()).build();
        //执行请求方式    接口回调
        okHttpClient.newCall(request).enqueue(callback);
    }

    /**
     *1.下载地址
     */
    public static void doDown(String url,Callback callback){
        OkHttpClient okHttpClient = getOkHttpClient();
        Request build = new Request.Builder().url(url).build();
        okHttpClient.newCall(build).enqueue(callback);
    }
}

OkHttpUtils

import android.os.Handler;
import java.util.concurrent.TimeUnit;
import java.util.logging.LoggingPermission;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;

public class OkHttpUtils {
    private Handler handler = new Handler();
    public Handler getHandler(){
        return handler;
    }

    //单例
    private static OkHttpUtils okHttpUtils = null;
    private OkHttpUtils(){};
    public static OkHttpUtils getInstance(){
        if(okHttpUtils == null){            
            okHttpUtils = new OkHttpUtils();
            client = new OkHttpClient.Builder()
                    .readTimeout(20, TimeUnit.SECONDS)
                    .writeTimeout(20,TimeUnit.SECONDS)
                    .connectTimeout(20, TimeUnit.SECONDS)
                    .addInterceptor(new LoggingInterceptor())
                    .build();
        }
        return okHttpUtils;
    }

    private static OkHttpClient client;
    private void initOkHttpClient(){
        if (client == null){
            client = new OkHttpClient.Builder().build();
        }
    }
    //公用的get请求方法  完成的功能不确定
    public void doGet(String url, Callback callback){
        initOkHttpClient();
        Request request=new Request.Builder().url(url).build();
        client.newCall(request).enqueue(callback);
    }
}

OnUiCallback

import android.os.Handler;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

public abstract class OnUiCallback implements Callback{
    private Handler handler = OkHttpUtils.getInstance().getHandler();
    public abstract void onFailed(Call call,IOException e);
    public abstract void onSuccess(String result);

    @Override
    public void onFailure(final Call call, final IOException e) {
        //该方法就是把  线程post到handler所在的线程
        handler.post(new Runnable() {
            @Override
            public void run() {
//                e.getMessage()
                onFailed(call,e);
            }
        });
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        final String result=response.body().string();
        handler.post(new Runnable() {
            @Override
            public void run() {
                onSuccess(result);
            }
        });
    }
}

bean文件夹下ProductsBean

import java.util.List;

public class ProductsBean {

    private String msg;
    private String code;
    private String page;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        private int bargainPrice;
        private String createtime;
        private String detailUrl;
        private String images;
        private int itemtype;
        private int pid;
        private int price;
        private int pscid;
        private int salenum;
        private int sellerid;
        private String subhead;
        private String title;

        public int getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(int bargainPrice) {
            this.bargainPrice = bargainPrice;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public String getDetailUrl() {
            return detailUrl;
        }

        public void setDetailUrl(String detailUrl) {
            this.detailUrl = detailUrl;
        }

        public String getImages() {
            return images;
        }

        public void setImages(String images) {
            this.images = images;
        }

        public int getItemtype() {
            return itemtype;
        }

        public void setItemtype(int itemtype) {
            this.itemtype = itemtype;
        }

        public int getPid() {
            return pid;
        }

        public void setPid(int pid) {
            this.pid = pid;
        }

        public int getPrice() {
            return price;
        }

        public void setPrice(int price) {
            this.price = price;
        }

        public int getPscid() {
            return pscid;
        }

        public void setPscid(int pscid) {
            this.pscid = pscid;
        }

        public int getSalenum() {
            return salenum;
        }

        public void setSalenum(int salenum) {
            this.salenum = salenum;
        }

        public int getSellerid() {
            return sellerid;
        }

        public void setSellerid(int sellerid) {
            this.sellerid = sellerid;
        }

        public String getSubhead() {
            return subhead;
        }

        public void setSubhead(String subhead) {
            this.subhead = subhead;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }
    }
 }

猜你喜欢

转载自blog.csdn.net/gh323093/article/details/80042142