## MainActivity
MainActivity
package com.example.zhaojunhui1205.view;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import com.example.zhaojunhui1205.R;
import com.example.zhaojunhui1205.presenter.DataPresenterImpl;
public class MainActivity extends AppCompatActivity implements IView {
private EditText name, pass;
private CheckBox jz_pass, zd_login;
private DataPresenterImpl mIPresenter;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = findViewById(R.id.name);
pass = findViewById(R.id.pass);
jz_pass = findViewById(R.id.jz_pass);
zd_login = findViewById(R.id.zd_login);
//创建presenter实例
mIPresenter = new DataPresenterImpl(this);
sharedPreferences = getSharedPreferences("user", MODE_PRIVATE);
editor = sharedPreferences.edit();
boolean JZ = sharedPreferences.getBoolean("JZ", false);
String name1 = sharedPreferences.getString("name1", null);
String pass1 = sharedPreferences.getString("pass1", null);
if (JZ){
name.setText(name1);
pass.setText(pass1);
jz_pass.setChecked(true);
}
boolean ZD = sharedPreferences.getBoolean("ZD", false);
if (ZD){
startActivity(new Intent(MainActivity.this, DetailsActivity.class));
}
findViewById(R.id.next).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username1 = name.getText().toString();
String pwd1 = pass.getText().toString();
if(jz_pass.isChecked()){
editor.putString("name1", username1);
editor.putString("pass1", pwd1);
editor.putBoolean("JZ", true);
editor.commit();
}else {
}
if (zd_login.isChecked()){
editor.putBoolean("ZD", true);
editor.commit();
}
mIPresenter.login(username1,pwd1);
}
});
}
@Override
public void success(Object data) {
//Toast.makeText(this, ""+data, Toast.LENGTH_SHORT).show();
startActivity(new Intent(MainActivity.this, DetailsActivity.class));
}
@Override
protected void onDestroy() {
super.onDestroy();
mIPresenter.onDetach();
}
}
IView
package com.example.zhaojunhui1205.view;
public interface IView<T> {
//登录与否
void success(T data);
}
DataPresenter层
package com.example.zhaojunhui1205.presenter;
import com.example.zhaojunhui1205.callback.CallBack;
import com.example.zhaojunhui1205.model.IModel;
import com.example.zhaojunhui1205.model.IModelImpl;
import com.example.zhaojunhui1205.view.IView;
public class DataPresenterImpl implements IPresenter {
private IView mIViewdata;
private IModelImpl model;
public DataPresenterImpl(IView mIView) {
this.mIViewdata = mIView;
model = new IModelImpl();
}
public void login(String username,String pwd){
model.login(username, pwd, new IModel() {
@Override
public void success(Object data) {
mIViewdata.success(data);
}
});
}
public void show(){
model.show(new IModel() {
@Override
public void success(Object data) {
mIViewdata.success(data);
}
});
}
public void onDetach(){
if (model!=null){
model = null;
}
if (mIViewdata != null){
mIViewdata = null;
}
}
}
IModelImpl
package com.example.zhaojunhui1205.model;
import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import com.example.zhaojunhui1205.bean.UserBean;
import com.example.zhaojunhui1205.callback.CallBack;
import com.example.zhaojunhui1205.utils.HttpUtils;
import com.example.zhaojunhui1205.bean.VideoBean;
import com.google.gson.Gson;
public class IModelImpl {
public void login(String username, String pwd, final IModel iModel){
HttpUtils.getRequest("http://www.xieast.com/api/user/login.php?username="+username+"&password="+pwd,
UserBean.class, new HttpUtils.CallBack<UserBean>() {
@Override
public void getdata(UserBean userBean) {
int code = userBean.getCode();
if(code==100){
iModel.success(userBean.getMsg());
}else if(code==101){
iModel.success(userBean.getMsg());
}else if(code==102){
iModel.success(userBean.getMsg());
}else if(code==103){
iModel.success(userBean.getMsg());
}
}
});
}
public void show(final IModel iModel){
HttpUtils.getRequest("http://www.xieast.com/api/news/news.php",
VideoBean.class, new HttpUtils.CallBack<VideoBean>() {
@Override
public void getdata(VideoBean newsBean) {
iModel.success(newsBean);
}
});
}
}
DataFragment展示数据
package com.example.zhaojunhui1205.fragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
import com.example.zhaojunhui1205.R;
import com.example.zhaojunhui1205.adapter.DataAdapter;
import com.example.zhaojunhui1205.presenter.DataPresenterImpl;
import com.example.zhaojunhui1205.bean.VideoBean;
import com.example.zhaojunhui1205.view.IView;
public class DataFragment extends Fragment implements IView {
private DataPresenterImpl mPresenter;
private ListView listView;
private DataAdapter mAdapter;
private VideoBean videoBean;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.datafragment, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mPresenter = new DataPresenterImpl(this);
listView = view.findViewById(R.id.listView);
mAdapter = new DataAdapter(getActivity());
listView.setAdapter(mAdapter);
mPresenter.show();
}
@Override
public void onDestroy() {
super.onDestroy();
if (mPresenter != null){
mPresenter.onDetach();
}
}
@Override
public void success(Object data) {
videoBean = (VideoBean) data;
mAdapter.setDatas(videoBean.getData());
//Toast.makeText(getActivity(), videoBean.getData()+"",Toast.LENGTH_SHORT).show();
}
}
CallingFragment个人名片
package com.example.zhaojunhui1205.fragment;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.zhaojunhui1205.R;
import com.example.zhaojunhui1205.presenter.DataPresenterImpl;
import java.lang.ref.WeakReference;
import cn.bingoogolapple.qrcode.zxing.QRCodeEncoder;
public class CallFragment extends Fragment {
private ImageView mImageView;
private Button button;
private String name;
private DataPresenterImpl mPresenter;
private SharedPreferences sharedPreferences;
private String name1;
private TextView textView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.callfragment, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mImageView = view.findViewById(R.id.imageView);
button = view.findViewById(R.id.button);
textView = view.findViewById(R.id.textView);
sharedPreferences = getActivity().getSharedPreferences("user", Context.MODE_PRIVATE);
name1 = sharedPreferences.getString("name1", null);
textView.setText(name1);
creatrQRcode();
}
//生成二维码
private void creatrQRcode() {
QRTask qrTask = new QRTask(getActivity(), mImageView,name1);
qrTask.execute(name1);
}
static class QRTask extends AsyncTask<String, Void, Bitmap> {
private WeakReference<Context> mContext;
private WeakReference<ImageView> mImageView;
public QRTask(Context context, ImageView image, String name) {
mContext = new WeakReference<>(context);
mImageView = new WeakReference<>(image);
}
@Override
protected Bitmap doInBackground(String... params) {
String str = params[0];
if (TextUtils.isEmpty(str)) {
return null;
}
int size = mContext.get().getResources().getDimensionPixelOffset(R.dimen.success_size);
return QRCodeEncoder.syncEncodeQRCode(str, size);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if (bitmap != null) {
mImageView.get().setImageBitmap(bitmap);
} else {
Toast.makeText(mContext.get(), "生成失败", Toast.LENGTH_SHORT).show();
}
}
}
}
DataAdapter数据适配
package com.example.zhaojunhui1205.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.zhaojunhui1205.R;
import com.example.zhaojunhui1205.bean.VideoBean;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
public class DataAdapter extends BaseAdapter {
private List<VideoBean.DataBean> mData;
private Context mContext;
public DataAdapter(Context mContext) {
this.mContext = mContext;
mData = new ArrayList<>();
}
public void setDatas(List<VideoBean.DataBean> data) {
this.mData = data;
notifyDataSetChanged();
}
@Override
public int getCount() {
return mData.size();
}
@Override
public VideoBean.DataBean getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
DataHolder mHolder;
if (convertView == null){
convertView = LayoutInflater.from(mContext).inflate(R.layout.data_item, parent, false);
mHolder = new DataHolder(convertView);
}else {
mHolder = (DataHolder) convertView.getTag();
}
mHolder.bindData(getItem(position));
return convertView;
}
class DataHolder{
TextView textView;
ImageView imageView1, imageView2, imageView3;
public DataHolder(View itemView){
textView = itemView.findViewById(R.id.text);
imageView1 = itemView.findViewById(R.id.image1);
imageView2 = itemView.findViewById(R.id.image2);
imageView3 = itemView.findViewById(R.id.image3);
itemView.setTag(this);
}
public void bindData(VideoBean.DataBean item) {
textView.setText(item.getAuthor_name());
if (imageView1 != null && imageView2 != null && imageView3 != null) {
ImageLoader.getInstance().displayImage(item.getThumbnail_pic_s(), imageView1);
ImageLoader.getInstance().displayImage(item.getThumbnail_pic_s02(), imageView2);
ImageLoader.getInstance().displayImage(item.getThumbnail_pic_s03(), imageView3);
}
}
}
}
附件
M层V层P层各有一个借口,Httputils工具类,imageLoader图片,App等,有一个CallBack接口,bean类,可根据自己需求来改动。
使用ListView展示可换,ZXing二维码依赖:implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.4'