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