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

**第一步导入相关依赖,如(记得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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值