MVPXlistView展示上拉下拉效果

作者:嘻嘻. 时间:2022-10-30 10:45:38 

本文实例为大家分享了MVPXlistView上拉下拉展示的具体代码,供大家参考,具体内容如下

抽基类


package com.gs.gg.day8.back;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

public abstract class BackActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 init();
}

protected abstract int getLayout();
protected abstract void initViews();
protected abstract void setOnClick();
protected abstract void processLogic();
void init(){
 if (getLayout()!=0){
  setContentView(getLayout());
  initViews();
  setOnClick();
  processLogic();
 }else {
  throw new IllegalStateException("请加载布局文件");
 }
}
}

Model


package com.gs.gg.day8.model;

import com.gs.gg.day8.callbase.MyCallBase;

public interface Model {
void getData(String mUrl,String parants,MyCallBase callBase);
}

MyCallBase


package com.gs.gg.day8.callbase;

import com.gs.gg.day8.bean.User;

public interface MyCallBase {
void setData(User data);
void setError(String error);
}

Modelimpl


package com.gs.gg.day8.model;

import android.os.Handler;
import android.os.Looper;
import android.os.Message;

import com.google.gson.Gson;
import com.gs.gg.day8.R;
import com.gs.gg.day8.bean.User;
import com.gs.gg.day8.callbase.MyCallBase;
import com.gs.gg.day8.util.HttpUtils;

import java.net.URL;

public class Modelimpl implements Model {
private Handler handler=new Handler(){
 @Override
 public void handleMessage(Message msg) {
  super.handleMessage(msg);
  String JsonStr= (String) msg.obj;
  Gson gson=new Gson();
  User user= gson.fromJson(JsonStr,User.class);
  callBase.setData(user);
 }
};
private MyCallBase callBase;
@Override
public void getData(final String mUrl, String parants, final MyCallBase callBase) {
 this.callBase=callBase;
 new Thread(new Runnable() {
  @Override
  public void run() {
   try {
    String json = HttpUtils.get(mUrl);
    handler.sendMessage(handler.obtainMessage(0,json));
   } catch (Exception e) {
    Looper.prepare();
    callBase.setError("异常");
    Looper.loop();
   }
  }
 }).start();
}
}

HttpUtils


package com.gs.gg.day8.util;

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

public class HttpUtils {
public static String get(String mUrl) throws Exception {
 URL url=new URL(mUrl);
 HttpURLConnection connection = (HttpURLConnection) url.openConnection();
 //设置请求方式
 connection.setRequestMethod("GET");
 connection.setConnectTimeout(5000);
 InputStream stream = connection.getInputStream();
 String inputStr = getInputStr(stream);
 return inputStr;
}

//把流转成字符串
private static String getInputStr(InputStream stream) throws IOException {
 BufferedReader br = new BufferedReader(new InputStreamReader(stream));
 StringBuffer sb = new StringBuffer();
 String str = null;
 while ((str = br.readLine()) != null) {
  sb.append(str);
 }
 return sb.toString();
}
}

IView


package com.gs.gg.day8.view;

import com.gs.gg.day8.bean.User;

public interface IView {
void success(User data);
void error(String error);
}

Presenter


package com.gs.gg.day8.presenter;

public interface Presenter {
void startReponse(String url,String parants);
}

PresenterImpl


package com.gs.gg.day8.presenter;

import com.gs.gg.day8.bean.User;
import com.gs.gg.day8.callbase.MyCallBase;
import com.gs.gg.day8.model.Modelimpl;
import com.gs.gg.day8.view.IView;

public class PresenterImpl implements Presenter {
private IView iView;
private Modelimpl model;

public PresenterImpl(IView iView) {
 this.iView = iView;
 model = new Modelimpl();
}

@Override
public void startReponse(String mUrl, String parants) {
 model.getData(mUrl,parants, new MyCallBase() {
  @Override
  public void setData(User data) {
   iView.success(data);
  }

@Override
  public void setError(String error) {
   iView.error(error);
  }
 });
}
public void onDotch(){
 if (iView!=null){
  iView=null;
 }
 if (model!=null){
  model=null;
 }
}
}

MainActivity


package com.gs.gg.day8;

import android.widget.Toast;

import com.gs.gg.day8.adapter.MyAdapter;
import com.gs.gg.day8.back.BackActivity;
import com.gs.gg.day8.bean.User;
import com.gs.gg.day8.presenter.PresenterImpl;
import com.gs.gg.day8.view.IView;
import com.gs.gg.myxlist.me.maxwin.view.XListView;

import java.util.ArrayList;

public class MainActivity extends BackActivity implements IView,XListView.IXListViewListener {

private XListView xlist_item;
private PresenterImpl presenter;
private ArrayList<User.DataBean> mlist=new ArrayList<>();
private String muUrl="http://www.xieast.com/api/news/news.php?page=";
private int i=1;
private MyAdapter adapter;

@Override
protected int getLayout() {
 return R.layout.activity_main;
}

@Override
protected void initViews() {
 xlist_item = findViewById(R.id.Xlist_item);
}

@Override
protected void setOnClick() {
 xlist_item.setPullLoadEnable(true);
 xlist_item.setXListViewListener(this);
}

@Override
protected void processLogic() {
 presenter = new PresenterImpl(this);
 adapter = new MyAdapter(MainActivity.this,mlist);
 xlist_item.setAdapter(adapter);
 presenter.startReponse(muUrl+i, null);
}

@Override
public void success(User data) {
 mlist.addAll(data.getData());
 adapter.notifyDataSetChanged();
 stop();
}

@Override
public void error(String error) {
 Toast.makeText(this, "异常", Toast.LENGTH_SHORT).show();
}
private void stop() {
 xlist_item.stopRefresh();
 xlist_item.stopLoadMore();
}

@Override
public void onRefresh() {
 i = 1;
 mlist.clear();
 presenter.startReponse(muUrl + i, null);
}

@Override
public void onLoadMore() {
 i++;
 presenter.startReponse(muUrl + i, null);
}
}

MyAdapter


package com.gs.gg.day8.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.gs.gg.day8.R;
import com.gs.gg.day8.bean.User;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.ArrayList;

public class MyAdapter extends BaseAdapter {
public MyAdapter(Context context, ArrayList<User.DataBean> mlist) {
 this.context = context;
 this.mlist = mlist;
}

private Context context;
private ArrayList<User.DataBean> mlist;

@Override
public int getCount() {
 return mlist.size();
}

@Override
public Object getItem(int position) {
 return mlist.get(position);
}

@Override
public long getItemId(int position) {
 return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
 HolderView holder=null;
 if (convertView==null){
  convertView= View.inflate(context, R.layout.item,null);
  holder=new HolderView();
  holder.textName=convertView.findViewById(R.id.text);
  holder.imageName=convertView.findViewById(R.id.image);
  convertView.setTag(holder);
 }else {
  holder= (HolderView) convertView.getTag();
 }
 User.DataBean bean = mlist.get(position);
 holder.textName.setText(bean.getTitle());
 ImageLoader.getInstance().displayImage(mlist.get(position).getThumbnail_pic_s(),holder.imageName);
 return convertView;
}
class HolderView{
 TextView textName;
 ImageView imageName;
}
}

来源:https://blog.csdn.net/qq_43611896/article/details/84931189

标签:MVPXlistView,上拉,下拉
0
投稿

猜你喜欢

  • SpringCloud之Feign示例详解

    2023-03-16 06:14:32
  • Java设计模式之共享模式/享元模式(Flyweight模式)介绍

    2023-06-15 04:35:10
  • Java Swing实现扫雷源码

    2023-11-10 08:16:20
  • 深入理解Java虚拟机 JVM 内存结构

    2022-05-01 20:49:57
  • 浅谈C#中对引用类型的误解

    2021-10-18 12:40:37
  • c#在WebAPI使用Session的方法

    2023-07-07 23:20:10
  • 深入理解Java设计模式之状态模式

    2022-07-07 12:49:44
  • Java反射之通过反射获取一个对象的方法信息(实例代码)

    2021-08-07 15:14:46
  • C#实现的文件操作封装类完整实例【删除,移动,复制,重命名】

    2022-09-14 20:41:14
  • Android编程实现google消息通知功能示例

    2023-02-02 20:00:27
  • idea插件之mybatis log plugin控制台sql的问题

    2023-05-14 06:45:32
  • 详谈java命令的本质逻辑揭秘

    2022-03-02 05:26:32
  • springboot+thymeleaf+druid+mybatis 多模块实现用户登录功能

    2022-09-17 21:36:41
  • Android使用gallery和imageSwitch制作可左右循环滑动的图片浏览器

    2021-08-31 22:49:45
  • 详解如何实现SpringBoot的底层注解

    2023-11-23 06:21:04
  • 一小时迅速入门Mybatis之初识篇

    2023-07-20 10:27:23
  • C#中DataTable排序、检索、合并等操作实例

    2022-08-22 04:58:03
  • Windows7下的Java运行环境搭建过程图解

    2022-03-14 19:40:59
  • Android获取SHA1的方法

    2022-11-18 20:55:12
  • Android 文件操作详解及简单实例

    2021-10-29 06:23:01
  • asp之家 软件编程 m.aspxhome.com