判断网络状态、Xutils3.0图片框架·····--狸菇凉_

来源:互联网 发布:动画制作软件手机版 编辑:程序博客网 时间:2024/06/15 08:22

此文章使用了mvp模式

model层的utils里面有一个bean,是自己的封装类

presenter层的basepersenter类和Mainpersenter类

view类里面有activity包、adapter包、iview包和application包


在此bean类就不写了


Basepersenter类

public class Basepersenter <T extends IMvpview> {    private T imvpview;    public T getImvpview() {        return imvpview;    }    public void setImvpview(T imvpview) {        this.imvpview = imvpview;    }}

Mainpersenter类

public class Mainpersenter extends Basepersenter<Maininterface> {    //获得缓存的数据    public void getCacheData(int index){        String url="http://www.93.gov.cn/93app/data.do?channelId=0&&startNum="+index;        MyUtils.httpCacheGet(url, MainBean.class, new MyUtils.UtilsInterface() {            @Override            public <T> void CallBack(T mclass) {                getImvpview().CallBack_Pulldata((MainBean) mclass);            }        });    }    //获得网络数据    public void getData(int index) {        String url="http://www.93.gov.cn/93app/data.do?channelId=0&&startNum="+index;        MyUtils.httpGet(url, MainBean.class, new MyUtils.UtilsInterface() {            @Override            public <T> void CallBack(T mclass) {                getImvpview().CallBack_Pulldata((MainBean) mclass);            }        });    }    public void refreshData(int index) {        String url="http://www.93.gov.cn/93app/data.do?channelId=0&&startNum="+index;        MyUtils.httpGet(url, MainBean.class, new MyUtils.UtilsInterface() {            @Override            public <T> void CallBack(T mclass) {                getImvpview().CallBack_Freshdata((MainBean) mclass);            }        });    }    public void setImagview(ImageView imagview,String url) {                MyUtils.setImag(imagview,url);    }}

view层的activity包里的Mainactivity类

public class MainActivity extends AppCompatActivity implements Maininterface,XListView.IXListViewListener {    private XListView list_view;    private Mainpersenter mainpersenter;    private MyPullAdapter myPullAdapter;    private int index=0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //进行网络判断,没有网络则跳转到设置        ConnectivityManager systemService = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);        NetworkInfo activeNetworkInfo = systemService.getActiveNetworkInfo();        if (activeNetworkInfo!=null && activeNetworkInfo.isConnected()){            Toast.makeText(this, "网络可用", Toast.LENGTH_SHORT).show();        }else{            AlertDialog.Builder builder = new AlertDialog.Builder(this);            builder.setMessage("当前没有网络连接,点击确定前往设置");            builder.setTitle("提醒");            //确定按钮            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                  @Override                  public void onClick(DialogInterface dialog, int which) {                      Intent intent=new Intent();                      intent.setClassName("com.android.settings", "com.android.settings.Settings");                      startActivity(intent);                  }              });            //取消按钮            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialog, int which) {                }            });            builder.show();        }        //初始化控件        initView();        //初始化数据        initData();    }    private void initData() {        //实例化v层对应的p层对象MainPersenter        mainpersenter = new Mainpersenter();        //将本层的引用传过去        mainpersenter.setImvpview(this);        //获得缓存的网络数据        mainpersenter.getCacheData(0);        //p层对象传给适配器,从而可以获得图片数据        myPullAdapter.setMainpersenter(mainpersenter);    }    private void initView() {        list_view = (XListView) findViewById(R.id.list_view);        //设置监听        list_view.setXListViewListener(this);        //设置可加载更多,默认就可一刷新        list_view.setPullLoadEnable(true);        //实例化适配器对象        myPullAdapter = new MyPullAdapter(this);        list_view.setAdapter(myPullAdapter);    }    //加载更多数据时的回掉方法    @Override    public void CallBack_Pulldata(MainBean mainbean) {        List<MainBean.DataBean> data = mainbean.getData();       //给适配器传递数据        myPullAdapter.setData(data);        //刷新适配器        myPullAdapter.notifyDataSetChanged();    }    //刷新数据时的回掉方法    @Override    public void CallBack_Freshdata(MainBean mainbean) {        List<MainBean.DataBean> data = mainbean.getData();        myPullAdapter.refreshData(data);        myPullAdapter.notifyDataSetChanged();    }    //xlistview监听的刷新    @Override    public void onRefresh() {        //此变量是url的参数之一,就是请求的数据起始角标        //每次返回的数据是19条,所以第一次的角标是0;第二次就是20,,,以此类推        index=index+20;        mainpersenter.refreshData(index);        list_view.stopRefresh(true);    }    //xlistview监听的加载更多    @Override    public void onLoadMore() {        //此变量是url的参数之一,就是请求的数据起始角标        //每次返回的数据是19条,所以第一次的角标是0;第二次就是20,,,以此类推        index=index+20;        mainpersenter.getData(index);        list_view.stopLoadMore();    }}

view层的adapter包里的MypullAdapter类

public class MyPullAdapter extends BaseAdapter {    private final Context mcontext;    private ArrayList<MainBean.DataBean> data =new ArrayList<>();    private ViewHolder viewHolder;    private Mainpersenter mainpersenter;    public MyPullAdapter(Context mainActivity) {        this.mcontext = mainActivity;    }    @Override    public int getCount() {        return data.size();    }    @Override    public Object getItem(int position) {        return data.get(position).getTITLE();    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        if (convertView == null) {            convertView = View.inflate(mcontext, R.layout.list_item, null);            viewHolder = new ViewHolder();            viewHolder.textView= (TextView) convertView.findViewById(R.id.text_my);            viewHolder.imageView= (ImageView) convertView.findViewById(R.id.imag_);            convertView.setTag(viewHolder);        }else{            viewHolder= (ViewHolder) convertView.getTag();        }            viewHolder.textView.setText(getItem(position).toString());            mainpersenter.setImagview(viewHolder.imageView,data.get(position).getIMAGEURL());        return convertView;    }    //加载更多,直接将将新数据添加到集合中    public void setData(List<MainBean.DataBean> data) {        if (data != null) {            this.data.addAll(data);        }    }    //刷新数据,先将原先集合的数据清空,再将新数据添加到集合中    public void refreshData(List<MainBean.DataBean> data) {        if (data != null) {            this.data.clear();            this.data.addAll(data);        }    }    //此方法就是把mainpersenter的引用传递过来    public void setMainpersenter(Mainpersenter mainpersenter) {        this.mainpersenter=mainpersenter;    }    private class ViewHolder{        TextView textView;        ImageView imageView;    }}

view层的iview包里的IMvpView类,,什么都没有

public interface IMvpview  {}

view层的iview包里的Maininterface类,

public interface Maininterface  extends IMvpview{        //加载更多时的回掉方法        void CallBack_Pulldata(MainBean mainbean);        //刷新数据的回掉方法        void CallBack_Freshdata(MainBean mainbean);}










































原创粉丝点击