<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>