实战MVP请求数据OKHttp封装RecyclerView上拉刷新下拉加载
2017-12-11 07:54
615 查看
//布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context="com.bwie.week2_demo.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索商品"
android:textSize="30sp"
android:layout_marginLeft="130dp"
android:layout_marginTop="10dp"
/>
<ImageView
android:id="@+id/img1"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/grid_icon"
android:layout_marginLeft="80dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/et_name1"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:hint="请输入关键字"
android:layout_marginLeft="25dp"
android:layout_marginTop="10dp"/>
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索"
android:layout_marginTop="10dp"
android:layout_marginLeft="15dp"
android:layout_marginBottom="10dp"/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview1"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</LinearLayout>
//presenter
package com.bwie.week2_demo.Presenter;
import android.content.Context;
import com.bwie.week2_demo.Bean.Bean;
import com.bwie.week2_demo.Model.MyModel;
import com.bwie.week2_demo.View.Iview;
import com.bwie.week2_demo.utils.OnUiCallback;
import com.google.gson.Gson;
import java.io.IOException;
import okhttp3.Call;
/**
* Created by 小醜 on 2017/12/9.
*/
public class Presenter {
Context context; Iview iView;
MyModel myModel;
public Presenter(Context context, Iview iView) {
this.context=context;
this.iView=iView;
this.myModel=new MyModel();
}
public void get(){
myModel.initData(new OnUiCallback() {
@Override
public void onFailed(Call call, IOException e) {
}
@Override
public void onSuccess(String result)
{
Gson gson=new Gson();
Bean bean= gson.fromJson(result, Bean.class);
iView.getData(bean);
}
});
}
}
//utils包 ok封装 导进
//view包 Iview类
package com.bwie.week2_demo.View;
import com.bwie.week2_demo.Bean.Bean;
/**
* Created by 小醜 on 2017/12/9.
*/
public interface Iview {
public void getData(Bean bean);
}
//model包
// Imodel类
package com.bwie.week2_demo.Model;
import okhttp3.Callback;
/**
* Created by 小醜 on 2017/12/9.
*/
public interface IModel {
public void initData(Callback callback);
}
//MyModel
package com.bwie.week2_demo.Model;
import com.bwie.week2_demo.utils.OkHttp3Utils;
import okhttp3.Callback;
/**
* Created by 小醜 on 2017/12/9.
*/
public class MyModel implements IModel {
@Override
public void initData(Callback callback) {
OkHttp3Utils.doGet("http://120.27.23.105/product/searchProducts?source=android&keywords=笔记本&page=1",callback);
}
}
//bean 类 封装
//MainActivity类
package com.bwie.week2_demo;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import com.bwie.week2_demo.Bean.Bean;
import com.bwie.week2_demo.Presenter.Presenter;
import com.bwie.week2_demo.View.Iview;
import java.util.List;
public class MainActivity extends AppCompatActivity implements Iview{
ImageView img1;
RecyclerView recyclerview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerview= (RecyclerView) findViewById(R.id.recyclerview1);
isitJump();
Presenter presenter=new Presenter(this,this);
presenter.get();
}
private void isitJump() {
img1 = (ImageView) findViewById(R.id.img1);
img1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
}
@Override
public void getData(Bean bean) {
List<Bean.DataBean> list=bean.getData();
MyAdapter myAdapter=new MyAdapter(this,list);
recyclerview.setAdapter(myAdapter);
}
}
//MyAdapter 类
package com.bwie.week2_demo;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
impo
4000
rt android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import com.bwie.week2_demo.Bean.Bean;
import java.util.List;
/**
* Created by 小醜 on 2017/12/9.
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
Context context; List<Bean.DataBean> list;
public MyAdapter(Context context, List<Bean.DataBean> list) {
this.context=context;
this.list=list;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return list==null?0:list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView img1;
EditText et_name1;
public ViewHolder(View itemView) {
super(itemView);
img1 = itemView.findViewById(R.id.img1);
et_name1 = itemView.findViewById(R.id.et_name1);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context="com.bwie.week2_demo.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索商品"
android:textSize="30sp"
android:layout_marginLeft="130dp"
android:layout_marginTop="10dp"
/>
<ImageView
android:id="@+id/img1"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/grid_icon"
android:layout_marginLeft="80dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/et_name1"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:hint="请输入关键字"
android:layout_marginLeft="25dp"
android:layout_marginTop="10dp"/>
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索"
android:layout_marginTop="10dp"
android:layout_marginLeft="15dp"
android:layout_marginBottom="10dp"/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview1"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</LinearLayout>
//presenter
package com.bwie.week2_demo.Presenter;
import android.content.Context;
import com.bwie.week2_demo.Bean.Bean;
import com.bwie.week2_demo.Model.MyModel;
import com.bwie.week2_demo.View.Iview;
import com.bwie.week2_demo.utils.OnUiCallback;
import com.google.gson.Gson;
import java.io.IOException;
import okhttp3.Call;
/**
* Created by 小醜 on 2017/12/9.
*/
public class Presenter {
Context context; Iview iView;
MyModel myModel;
public Presenter(Context context, Iview iView) {
this.context=context;
this.iView=iView;
this.myModel=new MyModel();
}
public void get(){
myModel.initData(new OnUiCallback() {
@Override
public void onFailed(Call call, IOException e) {
}
@Override
public void onSuccess(String result)
{
Gson gson=new Gson();
Bean bean= gson.fromJson(result, Bean.class);
iView.getData(bean);
}
});
}
}
//utils包 ok封装 导进
//view包 Iview类
package com.bwie.week2_demo.View;
import com.bwie.week2_demo.Bean.Bean;
/**
* Created by 小醜 on 2017/12/9.
*/
public interface Iview {
public void getData(Bean bean);
}
//model包
// Imodel类
package com.bwie.week2_demo.Model;
import okhttp3.Callback;
/**
* Created by 小醜 on 2017/12/9.
*/
public interface IModel {
public void initData(Callback callback);
}
//MyModel
package com.bwie.week2_demo.Model;
import com.bwie.week2_demo.utils.OkHttp3Utils;
import okhttp3.Callback;
/**
* Created by 小醜 on 2017/12/9.
*/
public class MyModel implements IModel {
@Override
public void initData(Callback callback) {
OkHttp3Utils.doGet("http://120.27.23.105/product/searchProducts?source=android&keywords=笔记本&page=1",callback);
}
}
//bean 类 封装
//MainActivity类
package com.bwie.week2_demo;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import com.bwie.week2_demo.Bean.Bean;
import com.bwie.week2_demo.Presenter.Presenter;
import com.bwie.week2_demo.View.Iview;
import java.util.List;
public class MainActivity extends AppCompatActivity implements Iview{
ImageView img1;
RecyclerView recyclerview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerview= (RecyclerView) findViewById(R.id.recyclerview1);
isitJump();
Presenter presenter=new Presenter(this,this);
presenter.get();
}
private void isitJump() {
img1 = (ImageView) findViewById(R.id.img1);
img1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
}
@Override
public void getData(Bean bean) {
List<Bean.DataBean> list=bean.getData();
MyAdapter myAdapter=new MyAdapter(this,list);
recyclerview.setAdapter(myAdapter);
}
}
//MyAdapter 类
package com.bwie.week2_demo;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
impo
4000
rt android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import com.bwie.week2_demo.Bean.Bean;
import java.util.List;
/**
* Created by 小醜 on 2017/12/9.
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
Context context; List<Bean.DataBean> list;
public MyAdapter(Context context, List<Bean.DataBean> list) {
this.context=context;
this.list=list;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return list==null?0:list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView img1;
EditText et_name1;
public ViewHolder(View itemView) {
super(itemView);
img1 = itemView.findViewById(R.id.img1);
et_name1 = itemView.findViewById(R.id.et_name1);
}
}
}
相关文章推荐
- MVP模式的OKhttp请求网络数据,xrecyclerview上拉刷新,下拉加载
- OkHttp请求_springview_recyclerview上拉刷新下拉加载
- 使用MVP注册登录模块+封装的OKhttp,拦截器+QQ第三方登录+RecyclerView+SpringView上拉加载下拉刷新网络数据
- 封装好的OKHttp(泛型)用RecyclerView展示请求的数据(全)
- MVP框架+RXJava+reftorfit请求网络数据+XRecycleView多条目展示(banner轮播+条目展示、刷新加载)、点击事件+fresco图片加载
- MVP+Rxjava+Okhttp+Retrofit+XRecyclerview请求数据
- RecyclerView上拉刷新与下拉加载封装
- MVP架构分包+OkHttp网络请求数据并展示到xrecyclerview上
- 调用OKhttp封装类请求网络数据适配到Recyclerview上拉下拉刷新
- 使用MVP,OKHttp封装类及其拦截器,RecyclerView,SpringView,ImageLoader实现数据的多条目加载
- MVP实现用Retrofit请求网络数据Fresco加载图片,Recyclerview CheckBox显示并实现全选删除
- MVP架构分包+OkHttp网络请求+RecyclerView展示数据
- MVP请求网络数据上拉刷新下拉加载加断点续传
- OkHttp的网络请求数据和RecyclerView的多条目加载,添加分割线
- MVP+XRecyclerView+okhttp+glide,列表或者网格显示所加载的数据
- MVP实现RecyclerView上拉刷新,下拉加载
- Android RecyclerView (四)总结(一)-(三)并且实现下拉刷新数据,上拉加载数据功能
- 单列模式,RecyclerView适配器封装,BroadcastReceiver介绍,Mvp+Retrofit+rxjava+okhttp框架的梳理总结
- 支持下拉加载刷新的RecyclerView
- PullToRefreshRecyclerView——带上拉刷新下拉加载功能的RecyclerView