MVP登录,展示数据,个人名片

登录自动登录记住密码我的数据我的名片## 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'

猜你喜欢

转载自blog.csdn.net/qq_43143422/article/details/84863536