android:MVP网络请求数据,运用RecyclerView-LinearLayout展示

来源:互联网 发布:mac截图保存位置修改 编辑:程序博客网 时间:2024/05/22 08:07
**第一步导入相关依赖,如(记得sync now) compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.squareup.okhttp3:logging-interceptor:3.9.0' compile 'com.google.code.gson:gson:2.8.2' compile 'com.nostra13.universalimageloader:universal-      image-loader:1.9.5' compile 'org.greenrobot:eventbus:3.1.1' compile 'com.android.support:recyclerview-v7:24.2.1'    **    *第二步,添加权限,如    <uses-permission android:name="android.permission.INTERNET">    </uses-permission>***第三步,布局main_activity**<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.bawei.oneshoppingcar.view.MainActivity"    android:orientation="vertical"    ><TextView    android:layout_width="match_parent"    android:layout_height="40dp"    android:text="购物车"    android:textSize="25sp"    android:textColor="#ff3660"    android:background="#990000ff"    android:gravity="center"    /><android.support.v7.widget.RecyclerView    android:id="@+id/Rv"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:layout_weight="1"    ></android.support.v7.widget.RecyclerView>    <RelativeLayout        android:layout_width="wrap_content"        android:layout_height="50dp"        android:layout_alignParentBottom="true"        android:background="@android:color/white"        android:gravity="center_vertical"        >        <CheckBox            android:id="@+id/qx"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:layout_marginLeft="10dp"            android:focusable="false"            android:text="全选"            />        <LinearLayout            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentRight="true"            android:orientation="horizontal"            >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="10dp"            android:text="合计"            />        <TextView            android:id="@+id/tv_money"            android:layout_width="wrap_content"            android:layout_height="50dp"            android:layout_marginLeft="10dp"            android:paddingRight="10dp"            android:text="0"            android:textColor="@android:color/holo_red_light"            />        <TextView            android:id="@+id/tv_num"            android:layout_width="wrap_content"            android:layout_height="50dp"            android:background="@android:color/holo_red_dark"            android:gravity="center"            android:padding="10dp"            android:text="结算(0)"            android:textColor="@android:color/white"            />        </LinearLayout>    </RelativeLayout></LinearLayout>**item**<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:orientation="horizontal"    android:gravity="center_vertical"    ><CheckBox    android:id="@+id/fx"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_marginLeft="12dp"    />    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical"        android:layout_marginLeft="12dp"        >        <TextView            android:id="@+id/myphone"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="小米Note"            />        <TextView            android:id="@+id/myplace"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="中国大陆"            />        <TextView           android:id="@+id/mytime"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="2017-11-21 15:58:59"            />    </LinearLayout><LinearLayout    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:orientation="vertical"    >        <TextView            android:id="@+id/myprice"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="¥200"            android:layout_marginLeft="16dp"            /><LinearLayout    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:orientation="horizontal"    android:layout_marginLeft="16dp"    >    <ImageView        android:id="@+id/add"        android:layout_width="20dp"        android:layout_height="20dp"        android:src="@drawable/shopcart_add_red"        />    <TextView        android:id="@+id/add_num_del"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="1"        />    <ImageView        android:id="@+id/del"        android:layout_width="20dp"        android:layout_height="20dp"       android:src="@drawable/shopcart_minus_red"        /></LinearLayout></LinearLayout>    <TextView        android:id="@+id/delete"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="删除"        android:layout_marginLeft="46dp"        /></LinearLayout>**net****Api**public interface Api {    public static final String url = "http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=evaluation";}**HttpUtils**public class HttpUtils {    private static volatile HttpUtils httpUtils;    private final OkHttpClient client;    private HttpUtils() {        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();        logging.setLevel(HttpLoggingInterceptor.Level.BODY);        client = new OkHttpClient.Builder()                .addInterceptor(logging)                .build();    }    public static HttpUtils getHttpUtils() {        if (httpUtils == null) {            synchronized (HttpUtils.class) {                if (httpUtils == null) {                    httpUtils = new HttpUtils();                }            }        }        return httpUtils;    }    /**     * GET请求     *     * @param url     * @param callback     */    public void doGet(String url, Callback callback) {        Request request = new Request.Builder().url(url).build();        client.newCall(request).enqueue(callback);    }}**OnNetListener**public interface OnNetListener<T> {    public void onSuccess(T t);    public void onFailure(Exception e);}**bean****封装我就不展示代码啦****model****IMainModel**public interface IMainModel {    public void getGoods(OnNetListener<GoosBean> onNetListener);}**MainModel**public class MainModel implements IMainModel{    private Handler handler = new Handler(Looper.getMainLooper());    @Override    public void getGoods(final OnNetListener<GoosBean> onNetListener) {        HttpUtils.getHttpUtils().doGet(Api.url, new Callback() {            @Override            public void onFailure(Call call, IOException e) {            }            @Override            public void onResponse(Call call, Response response) throws IOException {            String string=response.body().string();                final GoosBean goosBean = new Gson().fromJson(string, GoosBean.class);                handler.post(new Runnable() {                    @Override                    public void run() {                        onNetListener.onSuccess(goosBean);                    }                });            }        });    }}**view****IMainActivity **public interface IMainActivity {    public void showList(List<GoosBean.DataBean.DatasBean> list);}**MainActivity**public class MainActivity extends AppCompatActivity implements IMainActivity{    private RecyclerView Rv;    private CheckBox qx;    private TextView tv_money;    private TextView tv_num;    private Myadapter myadapter;    private MainPresenter mainPresenter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mainPresenter = new MainPresenter(this);        Rv = (RecyclerView) findViewById(R.id.Rv);        qx = (CheckBox) findViewById(R.id.qx);        tv_money = (TextView) findViewById(R.id.tv_money);        tv_num = (TextView) findViewById(R.id.tv_num);        Rv.setLayoutManager(new LinearLayoutManager(this));        mainPresenter.getGoods();    }    @Override    public void showList(List<GoosBean.DataBean.DatasBean> list) {        myadapter = new Myadapter(this,list);        Rv.setAdapter(myadapter);    }}**presenter****MainPresenter**public class MainPresenter {    private IMainModel iMainModel;    private IMainActivity iMainActivity;    public MainPresenter(IMainActivity iMainActivity) {        this.iMainActivity = iMainActivity;        iMainModel = new MainModel();    }    public void getGoods(){        iMainModel.getGoods(new OnNetListener<GoosBean>() {            @Override            public void onSuccess(GoosBean goosBean) {                List<GoosBean.DataBean.DatasBean> list = new ArrayList<GoosBean.DataBean.DatasBean>();                List<GoosBean.DataBean> data = goosBean.getData();                for (int i = 0; i < data.size(); i++) {                    List<GoosBean.DataBean.DatasBean> datas = data.get(i).getDatas();                    list.addAll(datas);                }                iMainActivity.showList(list);            }            @Override            public void onFailure(Exception e) {            }        });    }}**adapter****Myadapter**public class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{     /*上下文*/      private Context context;    /*集合*/      private List<GoosBean.DataBean.DatasBean> list;/*有参构造*/      public Myadapter(Context context, List<GoosBean.DataBean.DatasBean> list) {        this.context = context;        this.list = list;    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {       /*1.加载item布局*/        View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);        return new MyViewHolder(view);    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {       /*3.把封装里的数据(datasBean.getType_name)放入优化器( myViewHolder.fx)*/        final GoosBean.DataBean.DatasBean datasBean = list.get(position);        final MyViewHolder myViewHolder = (MyViewHolder) holder;        myViewHolder.fx.setChecked(datasBean.isChecked());        myViewHolder.myphone.setText(datasBean.getType_name());        myViewHolder.myplace.setText(datasBean.getMsg());        myViewHolder.mytime.setText(datasBean.getAdd_time());        myViewHolder.myprice.setText(datasBean.getPrice() + "");        myViewHolder.add_num_del.setText(datasBean.getNum() + "");    }    @Override    public int getItemCount() {        return list.size();    }    /*2.找到布局里的ID*/    class MyViewHolder extends RecyclerView.ViewHolder{        private final CheckBox fx;        private final TextView myphone;        private final TextView myplace;        private final TextView mytime;        private final TextView myprice;        private final TextView add_num_del;        public MyViewHolder(View itemView) {            super(itemView);            fx = (CheckBox) itemView.findViewById(R.id.fx);            myphone = (TextView) itemView.findViewById(R.id.myphone);            myplace = (TextView) itemView.findViewById(R.id.myplace);            myprice = (TextView) itemView.findViewById(R.id.myprice);            mytime = (TextView) itemView.findViewById(R.id.mytime);            add_num_del = (TextView) itemView.findViewById(R.id.add_num_del);        }    }}**希望可以帮到大家哦!!!**
阅读全文
0 0