1. 程式人生 > >用MVP框架網路獲取資料實現登入功能

用MVP框架網路獲取資料實現登入功能

<?xml version="1.0" encoding="utf-8"?>
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="使用者名稱"/>

    <EditText
        android:id="@+id/username"
        android:layout_width="200dp"
        android:layout_height="wrap_content"/>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="密碼"/>

    <EditText
        android:id="@+id/password"
        android:layout_width="200dp"
        android:layout_height="wrap_content"/>

</LinearLayout>

<Button
    android:id="@+id/login"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginTop="20dp"
    android:text="登入"
    />

view package liyuanqi.bwie.com.mvplx01;

import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;

import liyuanqi.bwie.com.mvplx01.prasenter.UserLoginPrasenter;

public class MainActivity extends AppCompatActivity implements View.OnClickListener, UserLoginPrasenter.UserShuju {

private EditText username;
private EditText password;
private Button login;

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


    initView();
     userLoginPrasenter = new UserLoginPrasenter(this);
}

private void initView() {
    username = (EditText) findViewById(R.id.username);
    password = (EditText) findViewById(R.id.password);
    login = (Button) findViewById(R.id.login);

    login.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.login:
            submit();
            break;
    }
}

private void submit() {
    // validate
    String names = username.getText().toString().trim();
   String  pwds= password.getText().toString().trim();
    if (userLoginPrasenter.isnull(names,pwds)) {
        userLoginPrasenter.panduanjieguo();
    }else {
        Toast.makeText(this, "賬號密碼不能為空", Toast.LENGTH_SHORT).show();
    }


}

@Override
public void cg() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(MainActivity.this, "登入成功", Toast.LENGTH_SHORT).show();
        }
    });
}

@Override
public void sb() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(MainActivity.this, "賬號或密碼錯誤", Toast.LENGTH_SHORT).show();
        }
    });
}

}

Prasenter(介面回撥)

package liyuanqi.bwie.com.mvplx01.prasenter;

import android.text.TextUtils;

import liyuanqi.bwie.com.mvplx01.model.User; import liyuanqi.bwie.com.mvplx01.model.UserLoginData;

public class UserLoginPrasenter { public UserLoginPrasenter(UserShuju userShuju) { mUserShuju = userShuju; } User user = new User(); public Boolean isnull(String names, String pwds){

    user.name=names;
    user.pwd=pwds;

    if (TextUtils.isEmpty(user.name)) {


        return false;
    }
    if (TextUtils.isEmpty(user.pwd)){
        return false;
    }
    return true;


 }

public void panduanjieguo() {
    new Thread(new Runnable() {
        @Override
        public void run() {
            if (UserLoginData.pdjieguo(user)) {
                mUserShuju.cg();

            } else {
                mUserShuju.sb();
            }

        }
    }).start();


}

public interface UserShuju{
    void cg();
    void sb();
}
private UserShuju mUserShuju;

}

model

一個數據的暫時存放的類 package liyuanqi.bwie.com.mvplx01.model; public class User { public String name; public String pwd; }

package liyuanqi.bwie.com.mvplx01.model;

import com.google.gson.Gson;

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.List;

獲取網路資料 public class UserLoginData {

static JsonBean jsonBean;
public static boolean pdjieguo( User user) {
    String wz="http://www.xieast.com/api/news/news.php?type=top&page=1&tdsourcetag=s_pcqq_aiomsg";
    try {   URL url = new URL(wz);

        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("GET");
        urlConnection.setReadTimeout(5000);
        urlConnection.setConnectTimeout(5000);
        int code = urlConnection.getResponseCode();
        if (code==200){
            String jsonString=httpstring(urlConnection.getInputStream());
            jsonBean = new Gson().fromJson(jsonString, JsonBean.class);
        }
        List<JsonBean.DataBean> data = jsonBean.getData();
        for (int i=0;i<data.size();i++){
            if(data.get(i).getCategory().equals(user.name) && data.get(i).getAuthor_name().equals(user.pwd)){

                return true;
            }
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

private static String httpstring(InputStream inputStream) {
    StringBuilder builder = new StringBuilder();
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    try {
        for (String temp=reader.readLine();temp!=null;temp=reader.readLine()){
            builder.append(temp);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        try {
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return builder.toString();
}

}