最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MVPXlistView展示上拉下拉效果

 更新時間:2018年12月17日 16:03:54   作者:嘻嘻.  
這篇文章主要為大家詳細(xì)介紹了MVPXlistView展示上拉下拉效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了MVPXlistView上拉下拉展示的具體代碼,供大家參考,具體內(nèi)容如下

抽基類

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();
  //設(shè)置請求方式
  connection.setRequestMethod("GET");
  connection.setConnectTimeout(5000);
  InputStream stream = connection.getInputStream();
  String inputStr = getInputStr(stream);
  return inputStr;
 }
 
 //把流轉(zhuǎn)成字符串
 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;
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android框架Volley使用之Json請求實現(xiàn)

    Android框架Volley使用之Json請求實現(xiàn)

    這篇文章主要介紹了Android框架Volley使用之Json請求實現(xiàn),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • Android多級樹形列表控件

    Android多級樹形列表控件

    這篇文章主要為大家詳細(xì)介紹了Android多級樹形列表控件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android中實現(xiàn)WebView和JavaScript的互相調(diào)用詳解

    Android中實現(xiàn)WebView和JavaScript的互相調(diào)用詳解

    這篇文章主要給大家介紹了關(guān)于Android中實現(xiàn)WebView和JavaScript的互相調(diào)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友下面來一起看看吧。
    2018-03-03
  • Android里面的Service種類以及啟動方式

    Android里面的Service種類以及啟動方式

    Android中的Service分為前臺服務(wù)和后臺服務(wù),前臺服務(wù)需要亮身份牌并顯示通知,后臺服務(wù)則有啟動方式選擇,包括startService和bindService,選擇啟動方式應(yīng)根據(jù)任務(wù)類型和場景進(jìn)行,需要的朋友可以參考下
    2025-02-02
  • Android應(yīng)用接入微信分享的實例代碼

    Android應(yīng)用接入微信分享的實例代碼

    本篇文章主要介紹了Android應(yīng)用接入微信分享的實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-07-07
  • Android開發(fā)之背景動畫簡單實現(xiàn)方法

    Android開發(fā)之背景動畫簡單實現(xiàn)方法

    這篇文章主要介紹了Android開發(fā)之背景動畫簡單實現(xiàn)方法,涉及Android背景動畫簡單設(shè)置與使用技巧,需要的朋友可以參考下
    2017-10-10
  • android webp編解碼詳解

    android webp編解碼詳解

    本文主要講解android webp編解碼,在Android開發(fā)過程中會遇到圖片的上傳和下載,這提供WebP編解碼縮小圖片,便與大家提高用戶體驗,有興趣的小伙伴可以參考下
    2016-08-08
  • Android中View.post和Handler.post的關(guān)系

    Android中View.post和Handler.post的關(guān)系

    這篇文章主要介紹了Android中View.post和Handler.post的關(guān)系,View.post和Handler.post是Android開發(fā)中經(jīng)常使用到的兩個”post“方法,關(guān)于兩者存在的區(qū)別與聯(lián)系,文章詳細(xì)分析需要的小伙伴可以參考一下
    2022-06-06
  • 利用Android畫圓弧canvas.drawArc()實例詳解

    利用Android畫圓弧canvas.drawArc()實例詳解

    這篇文章主要給大家介紹了關(guān)于利用Android畫圓弧canvas.drawArc()的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • 實例詳解Android自定義ProgressDialog進(jìn)度條對話框的實現(xiàn)

    實例詳解Android自定義ProgressDialog進(jìn)度條對話框的實現(xiàn)

    這篇文章主要介紹了實例詳解Android自定義ProgressDialog進(jìn)度條對話框的實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2016-01-01

最新評論

平度市| 丽江市| 仙居县| 韩城市| 大理市| 海林市| 林州市| 嘉兴市| 潍坊市| 察雅县| 大埔县| 南溪县| 屏南县| 长顺县| 永寿县| 昭觉县| 达州市| 茂名市| 腾冲县| 阳山县| 上饶县| 永州市| 江北区| 婺源县| 额济纳旗| 松江区| 霍邱县| 台南县| 武定县| 宝丰县| 巴里| 扎鲁特旗| 涪陵区| 科尔| 德江县| 都安| 图木舒克市| 广汉市| 威海市| 景洪市| 苍溪县|