简单使用OkHttp和MVP登录和注册

//先导包

implementation files('libs/universal-image-loader-1.9.5.jar')

implementation 'com.squareup.okhttp3:okhttp:3.9.1'
implementation files('libs/gson-2.8.0.jar')
//ImagrLoder

package view.bw.com.adapter;

import android.app.Application;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

/**
 * Created by lenovo on 2018/1/5.
 */

public class ImagrLoder extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration loaderConfiguration = ImageLoaderConfiguration.createDefault(this);
        ImageLoader.getInstance().init(loaderConfiguration);
    }
}
//MyAdpter


package view.bw.com.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

import view.bw.com.bean.SupperClass;
import view.bw.com.weekend3.R;

/**
 * Created by lenovo on 2018/1/5.
 */

public class MyAdpter extends BaseAdapter{
    private List<SupperClass.DataBean> list;
    private Context context;

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

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holderl;
        if (convertView==null){
            holderl = new ViewHolder();
            convertView = View.inflate(context, R.layout.item,null);
            holderl.iv = convertView.findViewById(R.id.iv);
            holderl.item_tt = convertView.findViewById(R.id.item_tt);
            convertView.setTag(holderl);
        }else{
            holderl = (ViewHolder) convertView.getTag();
        }
        ImageLoader.getInstance().displayImage(list.get(position).getIcon(),holderl.iv);
        holderl.item_tt.setText(list.get(position).getAppkey());
        return convertView;
    }

    class ViewHolder{
        ImageView iv;
        TextView item_tt;
    }
}
//ChangLiang

package view.bw.com.bean;

/**
 * Created by lenovo on 2018/1/6.
 */

public class ChangLiang {

    public static final String MY_ADDRESS = "http://120.27.23.105/user/";

    public static final String LOGIN_URL = MY_ADDRESS+"login";

    public static final String REGISTER_URL = MY_ADDRESS+"reg";
}
//SupperClass

package view.bw.com.bean;

/**
 * Created by lenovo on 2018/1/6.
 */

public class SupperClass {


    /**
     * msg : 登录成功
     * code : 0
     * data : {"age":null,"appkey":"df135821bc9a1c51","appsecret":"862F9D3F9CD1B2BE33D6703C5ADE4963","createtime":"2018-01-06T09:25:23","email":null,"fans":null,"follow":null,"gender":null,"icon":null,"latitude":null,"longitude":null,"mobile":"13718993295","money":null,"nickname":null,"password":"8F669074CAF5513351A2DE5CC22AC04C","praiseNum":null,"token":"CC1072092AB66EFAC067940BBBD4E01B","uid":10866,"userId":null,"username":"13718993295"}
     */

    private String msg;
    private String code;
    private 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 DataBean getData() {
        return data;
    }

    public void setData(DataBean data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * age : null
         * appkey : df135821bc9a1c51
         * appsecret : 862F9D3F9CD1B2BE33D6703C5ADE4963
         * createtime : 2018-01-06T09:25:23
         * email : null
         * fans : null
         * follow : null
         * gender : null
         * icon : null
         * latitude : null
         * longitude : null
         * mobile : 13718993295
         * money : null
         * nickname : null
         * password : 8F669074CAF5513351A2DE5CC22AC04C
         * praiseNum : null
         * token : CC1072092AB66EFAC067940BBBD4E01B
         * uid : 10866
         * userId : null
         * username : 13718993295
         */

        private Object age;
        private String appkey;
        private String appsecret;
        private String createtime;
        private Object email;
        private Object fans;
        private Object follow;
        private Object gender;
        private String icon;
        private Object latitude;
        private Object longitude;
        private String mobile;
        private Object money;
        private Object nickname;
        private String password;
        private Object praiseNum;
        private String token;
        private int uid;
        private Object userId;
        private String username;

        public Object getAge() {
            return age;
        }

        public void setAge(Object age) {
            this.age = age;
        }

        public String getAppkey() {
            return appkey;
        }

        public void setAppkey(String appkey) {
            this.appkey = appkey;
        }

        public String getAppsecret() {
            return appsecret;
        }

        public void setAppsecret(String appsecret) {
            this.appsecret = appsecret;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public Object getEmail() {
            return email;
        }

        public void setEmail(Object email) {
            this.email = email;
        }

        public Object getFans() {
            return fans;
        }

        public void setFans(Object fans) {
            this.fans = fans;
        }

        public Object getFollow() {
            return follow;
        }

        public void setFollow(Object follow) {
            this.follow = follow;
        }

        public Object getGender() {
            return gender;
        }

        public void setGender(Object gender) {
            this.gender = gender;
        }

        public String getIcon() {
            return icon;
        }

        public void setIcon(String icon) {
            this.icon = icon;
        }

        public Object getLatitude() {
            return latitude;
        }

        public void setLatitude(Object latitude) {
            this.latitude = latitude;
        }

        public Object getLongitude() {
            return longitude;
        }

        public void setLongitude(Object longitude) {
            this.longitude = longitude;
        }

        public String getMobile() {
            return mobile;
        }

        public void setMobile(String mobile) {
            this.mobile = mobile;
        }

        public Object getMoney() {
            return money;
        }

        public void setMoney(Object money) {
            this.money = money;
        }

        public Object getNickname() {
            return nickname;
        }

        public void setNickname(Object nickname) {
            this.nickname = nickname;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public Object getPraiseNum() {
            return praiseNum;
        }

        public void setPraiseNum(Object praiseNum) {
            this.praiseNum = praiseNum;
        }

        public String getToken() {
            return token;
        }

        public void setToken(String token) {
            this.token = token;
        }

        public int getUid() {
            return uid;
        }

        public void setUid(int uid) {
            this.uid = uid;
        }

        public Object getUserId() {
            return userId;
        }

        public void setUserId(Object userId) {
            this.userId = userId;
        }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }
    }
}
//SupperClassTwo

package view.bw.com.bean;

/**
 * Created by lenovo on 2018/1/7.
 */

public class SupperClassTwo {

    /**
     * msg : 注册成功
     * code : 0
     */

    private String msg;
    private String code;

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

//ILoginModel

package view.bw.com.model;

import view.bw.com.persenter.ILoginPersenter;

/**
 * Created by lenovo on 2018/1/6.
 */

public interface ILoginModel {

    void login(String mobile, String password, ILoginPersenter iLoginPersenter);
}
//LoginModel


package view.bw.com.model;

import android.os.Handler;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import view.bw.com.bean.ChangLiang;
import view.bw.com.persenter.ILoginPersenter;

/**
 * Created by lenovo on 2018/1/6.
 */

public class LoginModel implements ILoginModel{
    private Handler handler = new Handler();
    @Override
    public void login(String mobile, String password, final ILoginPersenter iLoginPersenter) {
        String url = ChangLiang.LOGIN_URL+"?mobile="+mobile+"&password="+password;

        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .get()
                .url(url)
                .build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        iLoginPersenter.onFailed(e.getMessage());
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String result = response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        iLoginPersenter.onSuccess(result);
                    }
                });
            }
        });
    }
}
//ILoginModelTwo

package view.bw.com.model2;

import view.bw.com.persenter2.ILoginPersenterTwo;

/**
 * Created by lenovo on 2018/1/7.
 */

public interface ILoginModelTwo {
    void login(String mobile, String password, ILoginPersenterTwo iLoginPersenterTwo);
}
//LoginModelTwo

package view.bw.com.model2;

import android.os.Handler;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import view.bw.com.bean.ChangLiang;
import view.bw.com.persenter2.ILoginPersenterTwo;

/**
 * Created by lenovo on 2018/1/7.
 */

public class LoginModelTwo implements ILoginModelTwo {
    private Handler handler = new Handler();
    @Override
    public void login(String mobile, String password, final ILoginPersenterTwo iLoginPersenterTwo) {
        String url = ChangLiang.REGISTER_URL+"?mobile="+mobile+"&password="+password;

        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .get()
                .url(url)
                .build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        iLoginPersenterTwo.onFailed(e.getMessage());
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String result = response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        iLoginPersenterTwo.onSuccess(result);
                    }
                });
            }
        });

    }
}
//ILoginPersenter

package view.bw.com.persenter;

/**
 * Created by lenovo on 2018/1/6.
 */

public interface ILoginPersenter {

    void login(String mobile,String password);
    void onFailed(String str);
    void onSuccess(Object o);

    void onDestory();
}
//LoginPersenter

package view.bw.com.persenter;

import com.google.gson.Gson;

import view.bw.com.bean.SupperClass;
import view.bw.com.model.ILoginModel;
import view.bw.com.model.LoginModel;
import view.bw.com.weekend3.IMainActivity;

/**
 * Created by lenovo on 2018/1/6.
 */

public class LoginPersenter implements ILoginPersenter {

    IMainActivity iMainActivity;
    ILoginModel loginModel;

    public LoginPersenter(IMainActivity iMainActivity) {
        this.iMainActivity = iMainActivity;
        loginModel = new LoginModel();
    }

    @Override
    public void login(String mobile, String password) {
        loginModel.login(mobile,password,this);
    }

    @Override
    public void onFailed(String str) {
        if (null==iMainActivity){
            return;
        }
        iMainActivity.onFailed(str);
    }

    @Override
    public void onSuccess(Object o) {
        if (null==iMainActivity){
            return;
        }
       String result = o.toString();

        Gson g = new Gson();
        SupperClass supperClass = g.fromJson(result, SupperClass.class);
        String code = supperClass.getCode();
        if (code.equals("0")){
            iMainActivity.onSuccess(result);
        }else{
            iMainActivity.onFailed(supperClass.getMsg());
        }


    }

    @Override
    public void onDestory() {
        if (null!=iMainActivity){
            iMainActivity = null;
        }
    }
}

//ILoginPersenterTwo

package view.bw.com.persenter2;

/**
 * Created by lenovo on 2018/1/7.
 */

public interface ILoginPersenterTwo {
    void login(String mobile,String password);
    void onFailed(String str);
    void onSuccess(Object o);

    void onDestory();
}
//LoginPersenterTow


package view.bw.com.persenter2;

import view.bw.com.model2.ILoginModelTwo;
import view.bw.com.model2.LoginModelTwo;
import view.bw.com.persenter.ILoginPersenter;
import view.bw.com.view2.IRegister;

/**
 * Created by lenovo on 2018/1/7.
 */

public class LoginPersenterTow implements ILoginPersenterTwo {

    IRegister iRegister;
    ILoginModelTwo loginModelTwo;
    public LoginPersenterTow(IRegister iRegister) {
        this.iRegister = iRegister;
        loginModelTwo = new LoginModelTwo();
    }

    @Override
    public void login(String mobile, String password) {
        loginModelTwo.login(mobile,password,this);
    }

    @Override
    public void onFailed(String str) {
        if (iRegister==null){
            return;
        }

        iRegister.onFailed(str);
    }

    @Override
    public void onSuccess(Object o) {
        if (null==iRegister){
            return;
        }

        iRegister.onSuccess(o.toString());

    }

    @Override
    public void onDestory() {
        if (null!=iRegister){
            iRegister=null;
        }
    }
}
//IRegister

package view.bw.com.view2;

/**
 * Created by lenovo on 2018/1/7.
 */

public interface IRegister {
    void onFailed(String s);
    void onSuccess(Object o);
}
//RegisterActivity


package view.bw.com.view2;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.google.gson.Gson;

import okhttp3.RequestBody;
import view.bw.com.bean.SupperClassTwo;
import view.bw.com.persenter2.ILoginPersenterTwo;
import view.bw.com.persenter2.LoginPersenterTow;
import view.bw.com.weekend3.MainActivity;
import view.bw.com.weekend3.R;

public class RegisterActivity extends AppCompatActivity implements IRegister{

    /**
     * 请输入电话号
     */
    private EditText mEtMobile;
    /**
     * 请输入密码
     */
    private EditText mEtPass;
    private ILoginPersenterTwo iLoginPersenterTwo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        initView();
        initText();
    }



    private void initView() {
        mEtMobile = (EditText) findViewById(R.id.et_mobile);
        mEtPass = (EditText) findViewById(R.id.et_pass);
    }

    private void initText() {
        iLoginPersenterTwo = new LoginPersenterTow(this);

    }


    public void btn_registerNow(View view) {
        String mobile = mEtMobile.getText().toString();
        String pass = mEtPass.getText().toString();

        iLoginPersenterTwo.login(mobile,pass);
    }

    @Override
    public void onFailed(String s) {
        Toast.makeText(this,s,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onSuccess(Object o) {
        String result = o.toString();
        Gson g = new Gson();
        SupperClassTwo supperClassTwo = g.fromJson(result, SupperClassTwo.class);
        String code = supperClassTwo.getCode();
        if (code.equals("0")){
            Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
            startActivity(intent);
            Toast.makeText(this,supperClassTwo.getMsg(),Toast.LENGTH_SHORT).show();
            finish();
        }else{
            Toast.makeText(this,supperClassTwo.getMsg(),Toast.LENGTH_SHORT).show();
        }


    }
}
//IMainActivity


package view.bw.com.weekend3;

/**
 * Created by lenovo on 2018/1/6.
 */

public interface IMainActivity  {
    void onFailed(String str);
    void onSuccess(Object o);
}

//MainActivity


package view.bw.com.weekend3;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import view.bw.com.persenter.LoginPersenter;
import view.bw.com.view2.RegisterActivity;

public class MainActivity extends AppCompatActivity implements IMainActivity {

    /**
     * 请输入电话号
     */
    private EditText mEtMobile;
    /**
     * 请输入密码
     */
    private EditText mEtPass;
    private LoginPersenter loginPersenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        mEtMobile = (EditText) findViewById(R.id.et_mobile);
        mEtPass = (EditText) findViewById(R.id.et_pass);
        loginPersenter = new LoginPersenter(this);
    }

    public void btn_login(View view){
        String mobile = mEtMobile.getText().toString();
        String password = mEtPass.getText().toString();
        loginPersenter.login(mobile,password);

    }

    public void btn_register(View view){

        Intent intent = new Intent(MainActivity.this,RegisterActivity.class);
        startActivity(intent);

    }
    @Override
    public void onFailed(String str) {
        Toast.makeText(this,str,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onSuccess(Object o) {
        String result = o.toString();
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        intent.putExtra("result",result);
        startActivity(intent);
    }


}

//SecondActivity


package view.bw.com.weekend3;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.List;

import view.bw.com.adapter.MyAdpter;
import view.bw.com.bean.SupperClass;

public class SecondActivity extends AppCompatActivity {

    /**
     * 我想找...
     */
    private EditText mEtName;
    private ListView mLv;
    private String result;
    private List<SupperClass.DataBean> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        initView();
        initText();
    }




    private void initView() {
        mEtName = (EditText) findViewById(R.id.et_name);
        mLv = (ListView) findViewById(R.id.lv);
        list = new ArrayList<>();
    }

    private void initText() {
        Intent intent = getIntent();
        result = intent.getStringExtra("result");


    }

//点击搜索
    public void btn_select(View view) {

        Gson g = new Gson();
        SupperClass supperClass = g.fromJson(result, SupperClass.class);

        for (int i = 0;i<30;i++){
            SupperClass.DataBean data = supperClass.getData();
            list.add(data);
        }
        MyAdpter adapter = new MyAdpter(list,SecondActivity.this);
        mLv.setAdapter(adapter);
    }


}

//布局

//activity_main.xml

<?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="view.bw.com.weekend3.MainActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录界面"
        android:gravity="center"
        android:textSize="25sp"
        android:textColor="#000000"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#000000"/>


    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入电话号"
        android:id="@+id/et_mobile"
        android:layout_marginTop="80dp"
        android:padding="10dp"
        />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="textPassword"
        android:id="@+id/et_pass"
        android:layout_marginTop="80dp"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="80dp"
        android:orientation="horizontal">
        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="登录"
            android:onClick="btn_login"
            />
        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="注册"
            android:onClick="btn_register"
            />
    </LinearLayout>

</LinearLayout>
//activity_register.xml

<?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="view.bw.com.weekend3.MainActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册界面"
        android:gravity="center"
        android:textSize="25sp"
        android:textColor="#000000"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#000000"/>


    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入电话号"
        android:id="@+id/et_mobile"
        android:layout_marginTop="80dp"
        android:padding="10dp"
        />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="textPassword"
        android:id="@+id/et_pass"
        android:layout_marginTop="80dp"
        />


        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="注册"
            android:onClick="btn_registerNow"
            />


</LinearLayout>
//activity_second.xml


<?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:orientation="vertical"
    android:layout_height="match_parent"
    tools:context="view.bw.com.weekend3.SecondActivity">

    <!--标题-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:layout_width="0dp"
            android:layout_weight="9"
            android:layout_height="wrap_content"
            android:text="搜索商品"
            android:textSize="20dp"
            android:gravity="center" />
        <ImageView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="25dp"
            android:src="@drawable/grid_icon"/>
    </LinearLayout>

    <!--搜索条-->
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_marginTop="5dp"
        android:layout_height="wrap_content">
        <EditText
            android:layout_width="0dp"
            android:layout_weight="8"
            android:layout_height="wrap_content"
            android:hint="我想找..."
            android:layout_margin="10dp"
            android:id="@+id/et_name"
            />

        <Button
            android:layout_width="0dp"
            android:layout_weight="2"
            android:layout_height="wrap_content"
            android:text="搜索"
            android:onClick="btn_select"
            android:layout_margin="10dp"/>
    </LinearLayout>

    显示区

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/lv"
        />
</LinearLayout>
//item.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_margin="5dp"
        android:id="@+id/iv"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:id="@+id/item_tt"/>
</LinearLayout>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值