MVP简易登录注册+PullTo展示数据

public interface DataCall {
void callback(Object data);

void faild(String error);

void showcallback(News news);

}
1
2
3
4
5
6
7
LoginModel
public static User login(String mobile, String password) {
String loginData = HttpUtils.get(“http://www.zhaoapi.cn/user/login?mobile=
+ mobile + “&password=” + password);
Gson gson = new Gson();
User user = gson.fromJson(loginData, User.class);
return user;
}
1
2
3
4
5
6
7
RegisterModel
public static User register(String mobole, String password) {
String loginData = HttpUtils.get(“http://www.zhaoapi.cn/user/reg?mobile=” + mobole + “&password=” + password);
Gson gson = new Gson();
User user = gson.fromJson(loginData, User.class);
return user;
}
1
2
3
4
5
6
ShowModel
public static News sel(int page){
String news_data = HttpUtils.get(“http://api.tianapi.com/huabian/?key=0a62585968ff23c66d052aec24bc6cc1&num=10&page=”+page);
Gson gson = new Gson();
News news = gson.fromJson(news_data, News.class);
return news;
}
1
2
3
4
5
6
HttpUtils
public static String get(String urlString) {
try {
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream inputStream = connection.getInputStream();//获取网络返回的输入流;
//可拼接的字符串
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String temp = “”;
while ((temp = bufferedReader.readLine()) != null) {
stringBuilder.append(temp);
temp = “”;
}
//这个是网络获取的数据
String data = stringBuilder.toString();
Log.d(TAG, “get: +++++”+data);
return data;
} catch (Exception e) {
e.printStackTrace();
}
return “”;
}
1
2
3

BasePresenter–基类
一定要是抽象类*

private final DataCall call;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
User user = (User) msg.obj;
String u = user.getCode();
int u2 = Integer.parseInt(u);
if (u2 == 0) {
call.callback(msg.obj);

        } else {
            call.faild(u);
        }
    }
};

public BasePresenter(DataCall dataCall) {
    call = dataCall;
}

public void request(final String... args) {
    new Thread() {
        @Override
        public void run() {
            super.run();
            Object data = useModel(args);
            //handler
            Message message = handler.obtainMessage();
            message.obj = data;
            handler.sendMessage(message);
        }
    }.start();
}

/**
 * 这个方法被子类实现之后,方法里面调用model获取数据
 */
public abstract Object useModel(String... args);

1
2
3

Presenter
return LoginModel.login(args[0], args[1]);

return RegisterModel.register(args[0], args[1]);
1
2
3
ShowPresenter
private final DataCall dataCall;

public ShowPresenter(DataCall back) {
    dataCall = back;
}

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        News news = (News) msg.obj;
        dataCall.showcallback(news);
    }
};

public void sel(final int page) {
    new Thread() {
        @Override
        public void run() {
            super.run();
            News news = ShowModel.sel(page);
            Message message = handler.obtainMessage();
            message.obj = news;
            handler.sendMessage(message);
        }
    }.start();

}

1
2
3
4
5

Activity
Activity实现 接口 重写方法

展示一定记得传page

1
2
3
4
##Login Activity

//初始化控件
initView();
//创建sp
sp = getSharedPreferences(“config.txt”, Context.MODE_PRIVATE);
//判断是否记住密码
rememberPwd();
//判断自动登录
autoPwd();
//设置监听---------状态改变 自动登录
mBtnBcpwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (mBtnBcpwd.isChecked()) {
mBtnJzpwd.setChecked(true);
}

        }
    });
    设置监听---------状态改变  记住密码
    mBtnJzpwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (!mBtnJzpwd.isChecked()) {
                mBtnBcpwd.setChecked(false);
            }
        }
    });

}

//自动登录
private void autoPwd() {
    boolean auto = sp.getBoolean("auto", false);
    if (auto) {
        Intent intent = new Intent(LoginActivity.this, ShowActivity.class);
        intent.putExtra("name", mobile);//传入用户名  做二维码
        startActivity(intent);
    }
}

//记住密码
private void rememberPwd() {
    //获取传来的账号密码
    String getmoilde = sp.getString("putmoilde", "");
    String getpwd = sp.getString("putpwd", "");
    boolean getremember = sp.getBoolean("putremember", false);
    //判断选中状态
    if (getremember) {
        //选中设置  默认登录显示
        mEdName.setText(getmoilde);
        mEdPwd.setText(getpwd);
        //设置选中
        mBtnJzpwd.setChecked(getremember);
    } else {
        //未选中为空
        mEdName.setText("");
        mEdPwd.setText("");
        mBtnJzpwd.setChecked(false);
    }
}

//初始化控件
private void initView() {
    mEdName = findViewById(R.id.ed_name);
    mEdPwd = findViewById(R.id.ed_pwd);
    mBtnJzpwd = findViewById(R.id.btn_jzpwd);
    mBtnBcpwd = findViewById(R.id.btn_bcpwd);
    mBtnLogin = findViewById(R.id.btn_login);
    mBtnLogin.setOnClickListener(this);
    mLoginReg = findViewById(R.id.login_reg);
    mLoginReg.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        default:
            break;
        case R.id.btn_login:
            //登录获取输入的账户密码
            mobile = mEdName.getText().toString();
            password = mEdPwd.getText().toString();
            //p层方法
            presenter.request(mobile, password);
            break;
        case R.id.login_reg:
            //注册页面跳转
            Intent intent = new Intent(this, RegisterActivity.class);
            startActivity(intent);
            break;
    }
}

//调用接口
@Override
public void callback(Object data) {
    //数据转型
    User user = (User) data;
    Toast.makeText(getBaseContext(), user.getCode() + " " + user.getMsg(), Toast.LENGTH_LONG).show();
    //*********获取记住密码勾选状态
    boolean remember = mBtnJzpwd.isChecked();
    SharedPreferences.Editor edit = sp.edit();
    //获取自动登录状态
    boolean auto = mBtnBcpwd.isChecked();
    //判断是否记住密码
    if (remember) {//勾选传值
        edit.putString("putmoilde", mobile);
        edit.putString("putpwd", password);
        edit.putBoolean("putremember", true);
        //传递---自动登录状态
        edit.putBoolean("auto", auto);
    } else {//未勾选 复选框未选中
        edit.putBoolean("putremember", false);
    }
    edit.commit();
    //登录跳转
    Intent intent = new Intent(LoginActivity.this, ShowActivity.class);
    intent.putExtra("name", mobile);//传入用户名  做二维码
    startActivity(intent);
}

@Override
public void faild(String error) {//异常吐司
    Toast.makeText(getBaseContext(), " 有问题啊老铁", Toast.LENGTH_LONG).show();
}

@Override
public void showcallback(News news) {

}

1
2
ShowActivity
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
//初始化控件
listView = view.findViewById(R.id.pullto);
presenter = new ShowPresenter(this);
presenter.sel(page);
listView.setMode(PullToRefreshBase.Mode.BOTH);
listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2() {
@Override
public void onPullDownToRefresh(PullToRefreshBase refreshView) {
type = 1;
page = 1;
getDataForNet(type, page);
}

        @Override
        public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
            type = 2;
            page++;
            getDataForNet(type, page);
        }
    });
    return view;
}

private void getDataForNet(int type, int page) {
    switch (type) {
        case 0:
            adapter.notifyDataSetChanged();
            break;
        case 1:
            adapter.notifyDataSetChanged();
            listView.onRefreshComplete();
            break;
        case 2:
            presenter.sel(page);
            adapter.notifyDataSetChanged();
            listView.onRefreshComplete();
            break;
    }
}

@Override
public void callback(Object data) {

}

@Override
public void faild(String error) {

}

@Override
public void showcallback(News news) {
    list = news.getNewslist();
    //建立适配器
    adapter = new NewsAdapter(MyApp.getContext(), list);
    listView.setAdapter(adapter);
    if (type == 2) {
        List<News.NewslistBean> list1 = news.getNewslist();
        list.addAll(list1);
        type = 0;
    }
}

1
2
3
4
5
生成二维码
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Bitmap bitmap = (Bitmap) msg.obj;
imageView.setImageBitmap(bitmap);
}
};
private ImageView imageView;
private String name;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment2, container, false);
imageView = view.findViewById(R.id.img);

    Intent intent = getActivity().getIntent();
    name = intent.getStringExtra("name");

    new Thread(new Runnable() {
        @Override
        public void run() {
        
           Bitmap bitmap = QRCodeEncoder.syncEncodeQRCode(name, 300);
            Message message = handler.obtainMessage();
            message.obj = bitmap;
            handler.sendMessage(message);
        }
    }) {
    }.start();
    return view;
}

作者:疯狂键盘侠
来源:CSDN
原文:https://blog.csdn.net/LG_lxb/article/details/84878778
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值