Android——关键字搜索商品

Android——关键字搜索商品


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

adapter——RVAdapter
public class RVAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener{

    private Context context;
    private List<JavaBean.DataBean> list;

    public RVAdapter(Context context, List<JavaBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }



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

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof MyHolder){
            MyHolder myHolder = (MyHolder) holder;
            ImageLoader.getInstance().displayImage(list.get(position).getImages(),myHolder.img,MyApplication.getOptons());
            myHolder.name.setText(list.get(position).getTitle());

            myHolder.name.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    listener.onItemClick();
                }
            });
        }
    }

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

    @Override
    public void onClick(View view) {
        if (listener!=null){
            listener.onItemClick();
        }
    }

    class MyHolder extends RecyclerView.ViewHolder{

        private ImageView img;
        private TextView name;


        public MyHolder(View itemView) {
            super(itemView);
            //找控件
            img = itemView.findViewById(R.id.image);
            name = itemView.findViewById(R.id.name);

        }
    }

    public interface OnClickListener{
        void onItemClick();
    }

    public OnClickListener listener;

    public void setOnItemClickListener(OnClickListener listener){
        this.listener = listener;
    }

}
bean——JavaBean 
public class JavaBean {

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 double bargainPrice;
        private String createtime;
        private String detailUrl;
        private String images;
        private int itemtype;
        private int pid;
        private double price;
        private int pscid;
        private int salenum;
        private int sellerid;
        private String subhead;
        private String title;

        public double getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(double 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 double getPrice() {
            return price;
        }

        public void setPrice(double 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;
        }
    }
}

model——MyModel 

public class MyModel {
    //网络请求
    public void login(String path,final MyModelListener listener) {

        HttpUtls.doGet(path, new Callback() {
            @Override
            public void onFailure(okhttp3.Call call, IOException e) {
                System.out.println("call = " + call);
                listener.onFailed(e.getMessage());
            }

            @Override
            public void onResponse(okhttp3.Call call, Response response) throws IOException {
                listener.onSuccess(response.body().string());
            }
        });
    }
}
model——MyModelListener
public interface MyModelListener {
    void onSuccess(String s);
    void onFailed(String e);
}


Presenter——MyPresenter 
public class MyPresenter {

    private MyViewListener listener ;
    private MyModel model;
    //构造器
    public MyPresenter(MyViewListener loginActivityViewListener){

        this.listener = loginActivityViewListener;
        this.model = new MyModel();

    }

    public void login(final String path){

        // 空判断 合法性
        model.login(path, new MyModelListener() {
            @Override
            public void onSuccess(String s) {
                Log.i("---onSuccess-------", "onSuccess: "+s.toString());
                listener.onSuccess(s);
            }

            @Override
            public void onFailed(String e) {
                Log.i("---onFailed-------", "onFailed: "+e.toString());
                listener.onFailed();
            }

        });


    }
}

view——MyViewListener
public interface MyViewListener {
    void onSuccess(String s);
    void onFailed();
}
//加载图片类

//清单注册一下droanid:name=".MyApplication"
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        String path = Environment.getExternalStorageDirectory()+"1507DAccess";

        File cacheDir = new File(path);

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
                .threadPriority(100)
                .threadPoolSize(3)
                .memoryCacheExtraOptions(200,200)
                .memoryCacheSize(2 * 1024 * 1024)
                .diskCache(new UnlimitedDiskCache(cacheDir))
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                .diskCacheSize(50 * 1024 * 1024)
                .build();
        ImageLoader.getInstance().init(config);

    }



    public static DisplayImageOptions getOptons(){


        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                //空图片

                .build();

        return options;


    }
}

////////——MainActivity——//////////
public class MainActivity extends AppCompatActivity implements MyViewListener {
    private XRecyclerView recyclerView;
    private MyPresenter presenter;
    private List<JavaBean.DataBean> listBeen;
    Button btn;
    EditText et;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找控件
        recyclerView = (XRecyclerView) findViewById(R.id.xrv);
        btn= (Button) findViewById(R.id.btn);
        et= (EditText) findViewById(R.id.et);
        //实例化presenter
        presenter = new MyPresenter(this);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String name=et.getText().toString();
                presenter.login("http://120.27.23.105/product/searchProducts?keywords="+name+"&page=1&source=android");
            }
        });

    }

    @Override
    public void onSuccess(final String s) {
        if (s!=null){
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //解析gson                    Gson gson = new Gson();
                    JavaBean bean = gson.fromJson(s.toString(),JavaBean.class);
                    listBeen = bean.getData();
                    //设置模式
                    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
                    recyclerView.setLayoutManager(linearLayoutManager);
                    //设置适配器
                    final RVAdapter adapter = new RVAdapter(MainActivity.this,listBeen);
                    recyclerView.setAdapter(adapter);

                    adapter.setOnItemClickListener(new RVAdapter.OnClickListener() {
                        @Override
                        public void onItemClick() {
                            Toast.makeText(MainActivity.this,"点击了",Toast.LENGTH_SHORT).show();
                        }
                    });

                }
            });
        }
    }

    @Override
    public void onFailed() {

    }
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.searchproduct.MainActivity">

    <LinearLayout
        android:id="@+id/ll1"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:background="@color/back1"
        android:layout_height="50dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="5"
            android:gravity="center"
            android:text="搜索商品"
            android:textSize="20sp"
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="切换"
            />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/ll2"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="50dp">
        <EditText
            android:id="@+id/et"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="5"
            android:gravity="center"
            android:text="请输入关键字"
            android:textSize="20sp"
            />
        <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="搜索"
            />
    </LinearLayout>
    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/xrv"
        android:layout_width="match_parent"
        android:layout_height="400dp">

    </com.jcodecraeer.xrecyclerview.XRecyclerView>
</LinearLayout>