MVP数据请求recycview展示

M层

public class Mod {
public void shuju(final Modlister modlister){
OkHttpClient okHttpClient=new OkHttpClient();
final Request request=new Request.Builder().url("http://v.juhe.cn/weixin/query?key=55010ae808217e996bbf414bbdad843c").build();
Call call=okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {

}

@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
modlister.result(string);
}
});
}
public interface Modlister{
public void result(String str);
}


}


V层
public interface acview  {
public void succeed(List<Bean.ResultBean.ListBean> list);
}

P层
public class Pre {
private acview acview1;
private Mod mod;
public Pre(acview acview1) {
this.acview1 = acview1;
this.mod=new Mod();
}
public void shuju(){
mod.shuju(new Mod.Modlister() {
@Override
public void result(String str) {
Gson gson=new Gson();
Bean bean = gson.fromJson(str, Bean.class);
List<Bean.ResultBean.ListBean> list = bean.getResult().getList();
acview1.succeed(list);
}
});
}


}




适配器
public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private List<Bean.ResultBean.ListBean>list;
private Context context;
public Adapter(List<Bean.ResultBean.ListBean> list, Context context) {
this.list = list;
this.context = context;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
return new VHItem(view);
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
VHItem vhItem= (VHItem) holder;
vhItem.textView.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getFirstImg(),vhItem.imageView);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//得到条目的位置
int position1 = holder.getLayoutPosition();
//将点击的事件回调
onitemclickListenter.onitemclick(holder.itemView,position1);
}
});
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
int position1 = holder.getLayoutPosition();
onitemclickListenter.onitemlongclick(holder.itemView,position1);
return false;
}
});
}

@Override
public int getItemCount() {
return list.size();
}


public class VHItem extends RecyclerView.ViewHolder{
ImageView imageView;
TextView textView;
public VHItem(View itemView) {
super(itemView);
imageView= (ImageView) itemView.findViewById(R.id.imageView);
textView= (TextView) itemView.findViewById(R.id.textView);

}
}
//点击条目的接口
public interface OnitemclickListenter{
void onitemclick(View view,int position);
void onitemlongclick(View view,int position);
}
private OnitemclickListenter onitemclickListenter;
public void setOnitemclick(OnitemclickListenter onitemclickListenter){
this.onitemclickListenter=onitemclickListenter;

}
}
activity
public class MainActivity extends AppCompatActivity implements acview, SwipeRefreshLayout.OnRefreshListener {

private RecyclerView recyclerView;
private Pre pre;
private List<Bean.ResultBean.ListBean> shuju;
private Adapter adapter;
private SwipeRefreshLayout swipeRefreshLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
swipeRefreshLayout.setOnRefreshListener(this);

pre = new Pre(this);
pre.shuju();

}


@Override
public void succeed(final List<Bean.ResultBean.ListBean> list) {
runOnUiThread(new Runnable() {
@Override
public void run() {
adapter = new Adapter(list,MainActivity.this);
recyclerView.setAdapter(adapter);
adapter.setOnitemclick(new Adapter.OnitemclickListenter() {
@Override
public void onitemclick(View view, int position) {
Toast.makeText(MainActivity.this,position+"",Toast.LENGTH_SHORT).show();
}

@Override
public void onitemlongclick(View view, int position) {

}
});
}
});
}

@Override
public void onRefresh() {
Toast.makeText(MainActivity.this,"下拉了",Toast.LENGTH_SHORT).show();
}
}
 

 

转载于:https://www.cnblogs.com/weisuodexiongmao/p/7699239.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

impress.js

介绍一下 impress.js是一个非常炫酷的幻灯片展示框架&#xff0c;依靠CSS3技术。 impress.js使用起来非常简单&#xff0c;下面就来简单介绍一下其用法。 Start 首先&#xff0c;当然要引入impress.js。 在div标签设置id为impress&#xff08;不要求一定是div&#xff09;…

Spring MVC:表单处理卷。 1个

Spring MVC是Spring Framework的一部分&#xff0c;其主要目的是使Web开发更加简单&#xff0c;便捷和轻松。 与表单的交互是或多或少现代Web应用程序的一部分。 Spring MVC允许您以非常严格和简单的方式执行各种形式的活动。 在本文中&#xff0c;您将在Spring MVC的帮助下阅读…

用php打出前一天的时间格式,[php]用PHP打印出前一天的时间格式

echo date("Y-m-d H:i:s",strtotime("-1 day"));例子echo(strtotime("now"));echo(strtotime("3 October 2005"));echo(strtotime("5 hours"));echo(strtotime("1 week"));echo(strtotime("1 week 3 days 7 …

《Python学习之路 -- 字符串的方法》

在前面已经提到Python中的字符串了&#xff0c;本文来列举介绍字符串的方法&#xff0c;我将字符串的方法分为以下几类&#xff1a; ①查询方法 str.find(target,startNone,endNone) 该方法用于查询字符串str中是否含有target&#xff0c;如果有&#xff0c;则返回target在这个…

Java监视器绑定的超人

这是超人生活中的黑暗时期。 乔尔艾尔&#xff08;Jor-El&#xff09;希望他继续航行&#xff0c;为他的最终命运做好准备。 然而&#xff0c;地球面临着世界末日&#xff0c;正义联盟需要他们的钢铁侠行动来拯救世界。 但是由于我们只有一个超人&#xff0c;您不能同时做这两个…

C语言第一次实验报告

一&#xff0e;实验题目&#xff0c;设计思路&#xff0c;实现方法 第四次 计算分段函数和循环NEW 4-3 求N分之一序列前N项和 4-6 输出华氏-摄氏温度转换表 第四次 分支循环 加强版 4-2-7 装睡 设计思路&#xff1a;4-3开始需要计算大量式子&#xff0c;因此利用到相对便捷的…

php充值卡,ecshop 充值卡功能_懒人程序

/*显示页面的action列表*/$ui_arrarray(register,login,profile,... 增加cz然后在下面代码处加入if ($actioncz)//冲值{ if($_GET[a]add){ if (empty($_SESSION[user_id])){ show_message(该用户不存在。,返回上一页,user.php?actcz);} else{ $kstrtoupper(substr($_POST[k],0…

CSS实现垂直居中的5种方法

利用 CSS 来实现对象的垂直居中有许多不同的方法&#xff0c;比较难的是选择那个正确的方法。我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站。 使用 CSS 实现垂直居中并不容易。有些方法在一些浏览器中无效。下面我们看一下使对象垂直集中的5种不同方法&#xf…

尝试使用jBPM Console NG(测试版)

大家好&#xff01; 这是关于jBPM Console NG的另一篇文章。 经过6个月的辛苦工作&#xff0c;我很高兴为开发者社区撰写这篇文章&#xff0c;以进行尝试。 在这篇文章中&#xff0c;我将解释如何从源代码构建应用程序。 这背后的主要思想是知道如何在测试过程中设置环境并修改…

三个实用的提升网页性能技巧

1、display属性设置 先将元素设为 display: none&#xff08;需要1次重排和重绘&#xff09;&#xff0c;然后对这个节点进行100次操作&#xff0c;最后再恢复显示&#xff08;需要1次重排和重绘&#xff09;。这样一来&#xff0c;你就用两次重新渲染&#xff0c;取代了可能高…

mysq在某一刻同时获取主从库的位置点

在从库进行锁表操作flush table with read lock&#xff0c; 通过show slave status\G 获取对应主库的位置点&#xff1a; show slave status\G*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host…

php在window磁盘管理,Windows Server 2008R2设置磁盘阵列

RAID(独立硬盘冗余阵列)指用多个硬盘组成一个高性能、大容量的一个硬盘组合。独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks)&#xff0c;旧称廉价磁盘冗余阵列(RedundantArray of Inexpensive Disks)&#xff0c;简称硬盘阵列。其基本思想就是把多个相对便宜的…

解决Error: ENOENT: no such file or directory, scandir 安装node-sass报错

新项目开发需要安装依赖&#xff0c;但是安装完之后通过gulp运行项目&#xff0c;产生了一下的报错&#xff1a; 解决方案是执行一些方法&#xff1a; npm rebuild node-sass可是有时就是网络问题导致上面命令安装失败&#xff0c;查下失败提示&#xff0c;有可能是&#xff1a…

没有应用程序服务器

我们最近发布了有关从免费Plumbr部署中收集的应用服务器市场份额的数据 。 它产生了很好的共鸣-通过不同的渠道&#xff0c;我们获得了数百种有关如何解释数据的评论。 但是&#xff0c;通过各种渠道不断提出一种形式不同的论点。 无论是采用“ T omcat不是应用程序服务器 ”的…

HTML基础知识(未完待续)

一、HTML编辑工具&#xff1a;Sublime Text 二、HTML实体字符&#xff1a;1、&#xff08; 空格&#xff09;&#xff1a;&nbsp&#xff1b; 2、&#xff08;<&#xff09; &lt&#xff1b; 3、&#xff08;>&#xff09;&gt&#xff1b; 4、&#xff08;&a…

系统讲解CSS,前端开发最神奇的技术,新手的你一定不能错过

前面小编带领大家重温了前端开发中最基本的HTML语言。如果你已经掌握了这门语言&#xff0c;那么恭喜你&#xff0c;可以去深入了解CSS技术了。CSS技术最主要的功能就是弥补HTML标记对在页面中显示外观的不足&#xff0c;对这些标记对的默认外观进行美化。从本文开始&#xff0…

java 自定义对象 排序,使用自定义排序顺序对对象的ArrayList进行排序

问题我希望为我的地址簿应用程序实现一个排序功能。我想排序anArrayList contactArray.Contact是一个包含四个字段的类&#xff1a;名称&#xff0c;家庭电话号码&#xff0c;手机号码和地址。我想排序name。如何编写自定义排序功能来执行此操作&#xff1f;#1 热门回答(255 赞…

JUnit和Mockito合作

这次&#xff0c;我想对测试框架Mockito进行概述。 毫无疑问&#xff0c;这是用于测试Java代码的最受欢迎的工具之一。 我已经对Mockito的竞争对手EasyMock进行了概述。 这篇文章将基于有关EasyMock的示例应用程序。 我的意思是代表咖啡机功能的类。 用Mockito准备测试 通常&a…

发现2017年最好的CSS框架

如今&#xff0c;无数的框架出现在定期而少数人喜欢自助&#xff0c;Foundation和angular.js主宰了整个世界的发展。CSS代表用于描述HTML&#xff08;或XML&#xff09;文档表示的样式表语言。一个框架被定义为一个包&#xff0c;它由一组结构化的文件和标准化代码&#xff08;…

[python基础] python 2与python 3之间的区别 —— 默认中文字符串长

在python 2.7中使用len获得中文字符串长度时&#xff1a; >>> len(中文) 4 >>> a你好 >>> a \xc4\xe3\xba\xc3 >>> len(a.encode(utf-8))Traceback (most recent call last):File "<pyshell#77>", line 1, in <module&…