用MVP框架網路獲取資料實現登入功能
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();
}
}