MVPXlistView展示上拉下拉效果
作者:嘻嘻. 发布时间:2022-10-30 10:45:38
标签:MVPXlistView,上拉,下拉
本文实例为大家分享了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


猜你喜欢
- springboot整合tkmapper1.导入pom依赖1.1 导入springboot的parent依赖<parent> &
- 实现目标:使用springMVC前端控制器,跳转到WEB-INF的templates下面的前端页面图示1.目录结构2.创建一个maven的w
- SpringBoot读取外置logback配置文件springboot项目可以读取外置配置文件,避免了修改配置文件需要重新打包部署的问题。部
- 什么是OKHttp一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进
- 在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备
- JVM内存模型在JVM中内存被分成两大块,分别是堆内存和堆外内存,堆内存就是JVM使用的内存,而堆外内存就是非JVM使用的内存,一般是分配给
- list.remove最近做项目的过程中,需要用到list.remove()方法,结果发现两个有趣的坑,经过分析后找到原因,记录一下跟大家分
- 一、一级缓存二级缓存的概念解释(1)一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓
- 寻找到application.yml的读取的操作。从spring.factories 中查看到# Application Listeners
- 一、概要1.Java虚拟机(Jvm)是什么?2.Java虚拟机是用来干什么的?3.Java虚拟机它的体系结构是什么样子的?4.Java虚拟机
- 常见尺寸单位Android开发中的常用尺寸单位有如下几种:dp (dip)pxptinchsp算不知道确切含义,相信对于以上这几种尺寸单位大
- 起因曾经用过西门子出的 * , 好处是直接有SDK开发包, 不会硬件开发也能直接使用缺点也是明显的, 就是只支持Windows系统, 另外就
- Android中广播(BroadcastReceiver)的详细讲解.1. BroadcastReceiver的注册过程: (1).广播消息
- 对于步入编程行业不深的初学者或是已经有所领会的人来说,当学习一项新的技术的时候,非常渴望有一个附上注释完整的Demo。本人深有体会,网上的例
- 首先我们常用的注解包括@Entity、@Table、@Id、@IdClass、@GeneratedValue、@Basic、@Transie
- 环境搭建创建Maven项目。pom.xml文件中引入RocketMQ依赖。<dependencies>  
- 问题描述设有n个会议的集合C={1,2,…,n},其中每个会议都要求使用同一个资源(如会议室),而在同一时间内只能有一
- 摘要:vs2019新鲜出炉,配置opencv又有哪些不一样呢,这个教程将会一步一步的教你如何配置opencv和跑动opencv一个简单的项目
- 示例代码本文分析示例代码如下:launch(Dispatchers.Main) { flow { em
- AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Map