MVPXlistView展示上拉下拉效果
作者:嘻嘻.
这篇文章主要为大家详细介绍了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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- Android ListView和Adapter数据适配器的简单介绍
- 详解xamarin Android 实现ListView万能适配器
- Android ListView适配器(Adapter)优化方法详解
- Android ListView万能适配器实例代码
- Android巧用XListView实现万能下拉刷新控件
- android使用flutter的ListView实现滚动列表的示例代码
- Android自定义控件ListView下拉刷新的代码
- Android通过代码控制ListView上下滚动的方法
- Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题
- ListView通用泛型适配器