//MainActivity类public class MainActivity extends AppCompatActivity implements DataView {private RecyclerView mRv;private DataPresenterImp dataPresenterImp;private MyRvAdapter myRvAdapter;//数据集合
    private List<String >list=new ArrayList<>();//获取数据的开始
    private int curr;@Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mRv = findViewById(R.id.rv);LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);mRv.setLayoutManager(linearLayoutManager);dataPresenterImp = new DataPresenterImp(this);dataPresenterImp.showData("1");}@Override
    public void showData(List<DataBeans.DataBeanX.DataBean> list) {//适配器
        myRvAdapter = new MyRvAdapter(this, list);mRv.addItemDecoration(new SpacesItemDecoration(10));mRv.setAdapter(myRvAdapter);myRvAdapter.setOnItemClick(new MyRvAdapter.OnItemClick() {@Override
            public void onImageClick(View view) {ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", new float[]{1f, 0.5f, 0.0f, 0.5f, 1.0f});alpha.setRepeatMode(ObjectAnimator.RESTART);alpha.setDuration(2000);alpha.setRepeatCount(0);alpha.start();}@Override
            public void onItemClick(int position) {//弹出框
                showAlertDialog(position);}});}private void showAlertDialog(final int position) {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("提示:");builder.setMessage("请问你要删除吗?");builder.setIcon(R.mipmap.ic_launcher_round);//点击对话框以外的区域是否让对话框消失
        builder.setCancelable(false);//设置正面按钮
        builder.setPositiveButton("是的", new DialogInterface.OnClickListener() {@Override
            public void onClick(DialogInterface dialog, int which) {myRvAdapter.deleteItem(position);myRvAdapter.notifyDataSetChanged();dialog.dismiss();}});//设置反面按钮
        builder.setNegativeButton("不是", new DialogInterface.OnClickListener() {@Override
            public void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});AlertDialog dialog = builder.create();dialog.show();}@Override
    protected void onDestroy() {super.onDestroy();dataPresenterImp.cloneView();}
}//MainActivity副本
<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rv"/>//MyRvAdapter适配器
public class MyRvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {private String imageSplice = "http://365jia.cn/uploads/";private Context context;private List<DataBeans.DataBeanX.DataBean> list;private LayoutInflater inflater;private final static int NORMAL = 1;private final static int IMAGES = 2;public MyRvAdapter(Context context, List<DataBeans.DataBeanX.DataBean> list) {this.context = context;this.list = list;inflater = LayoutInflater.from(context);}@NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {RecyclerView.ViewHolder holder;if(viewType == NORMAL){View view = inflater.inflate(R.layout.normal_item,parent,false);holder = new NormalViewHolder(view);}else if(viewType == IMAGES){View view = inflater.inflate(R.layout.images_item,parent,false);holder = new ImagesViewHolder(view);}else{holder = null;}return holder;}@Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {int itemViewType = getItemViewType(position);DataBeans.DataBeanX.DataBean dataBean = list.get(position);if(itemViewType == NORMAL){NormalViewHolder normalViewHolder = (NormalViewHolder) holder;normalViewHolder.normal_title.setText(dataBean.getTitle());Glide.with(context).load(imageSplice+dataBean.getPics().get(0)).into(normalViewHolder.normal_img);normalViewHolder.itemView.setOnClickListener(new View.OnClickListener() {@Override
                public void onClick(View v) {if(mOnItemClick != null){mOnItemClick.onItemClick(position);}}});}else if(itemViewType == IMAGES){ImagesViewHolder imagesViewHolder = (ImagesViewHolder) holder;imagesViewHolder.images_title.setText(dataBean.getTitle());Glide.with(context).load(imageSplice+dataBean.getPics().get(0)).into(imagesViewHolder.images01);Glide.with(context).load(imageSplice+dataBean.getPics().get(1)).into(imagesViewHolder.images02);Glide.with(context).load(imageSplice+dataBean.getPics().get(2)).into(imagesViewHolder.images03);imagesViewHolder.itemView.setOnClickListener(new View.OnClickListener() {@Override
                public void onClick(View v) {if(mOnItemClick != null){mOnItemClick.onItemClick(position);}}});}}@Override
    public int getItemCount() {return list.size();}@Override
    public int getItemViewType(int position) {String type = list.get(position).getType();if("images".equals(type)){return IMAGES;}else{return NORMAL;}}class NormalViewHolder extends RecyclerView.ViewHolder {private final TextView normal_title;private final ImageView normal_img;public NormalViewHolder(final View itemView) {super(itemView);normal_title = itemView.findViewById(R.id.normal_title);normal_img = itemView.findViewById(R.id.normal_img);normal_img.setOnClickListener(new View.OnClickListener() {@Override
                public void onClick(View v) {if(mOnItemClick != null){mOnItemClick.onImageClick(v);}}});}}class ImagesViewHolder extends RecyclerView.ViewHolder{private final ImageView images01;private final ImageView images02;private final ImageView images03;private final TextView images_title;public ImagesViewHolder(View itemView) {super(itemView);images01 = itemView.findViewById(R.id.images01);images02 = itemView.findViewById(R.id.images02);images03 = itemView.findViewById(R.id.images03);images_title = itemView.findViewById(R.id.images_title);images01.setOnClickListener(new View.OnClickListener() {@Override
                public void onClick(View v) {if(mOnItemClick != null){mOnItemClick.onImageClick(v);}}});images02.setOnClickListener(new View.OnClickListener() {@Override
                public void onClick(View v) {if(mOnItemClick != null){mOnItemClick.onImageClick(v);}}});images03.setOnClickListener(new View.OnClickListener() {@Override
                public void onClick(View v) {if(mOnItemClick != null){mOnItemClick.onImageClick(v);}}});}}interface OnItemClick{void onImageClick(View view);void onItemClick(int position);}private OnItemClick mOnItemClick;public void setOnItemClick( OnItemClick onItemClick){this.mOnItemClick = onItemClick;}//删除
    public void deleteItem(int poistion){list.remove(poistion);}
}// 适配器布局1 normal_item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="horizontal"><LinearLayout
        android

MVP+RecyclerView多条目+OkHttp(get和post请求方法)+属性动画+imageLoader加载图片相关推荐

  1. Android RecyclerView(八)设置自定义 下拉刷新 与 上拉加载数据

    Android RecyclerView(八)设置下拉刷新 与 上拉加载数据 GitHub 项目源码 CSDN 博客说明 智慧安卓App 文章分析 下拉刷新效果 上拉加载数据效果 1 xml布局文件中 ...

  2. RecyclerView使用 及 滑动时加载图片优化方案

    RecyclerView使用 及 滑动时加载图片优化方案 简述 本篇博文主要给大家分享关于RecyclerView控件的使用及通过继承RecyclerView来实现滑动时加载图片的优化方案,也同样能解 ...

  3. RecyclerView 滑动时不让 Glide 加载图片

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollS ...

  4. Android框架之路——Glide加载图片(结合RecyclerView、CardView)

    Android框架之路--Glide加载图片 一.简介: 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开 ...

  5. Android RecyclerView使用 及 滑动时加载图片优化方案

    1.控制线程数量 + 数据分页加载2.重写onScrollStateChanged方法 这个我们后面再谈,下面先来看看RecyclerView控件的使用及我们为什么选择使用它 RecyclerView ...

  6. Android的MVP设计架构:网络加载图片为例

    再写一个Android中MVP的实例,该例子通过okhttp加载一张网络图片到ImageView,使用MVP设计架构实现. 架构的抽象建模: package zhangphil.pattern;/** ...

  7. 揭秘之从RecyclerView滑动监听到Gilde平滑加载图片

    版权声明:本文为博主原创文章,未经博主允许不得转载. 本文应该是RecyclerView的第三篇,今天来讲讲如何让RecyclerView优先加载可见item,如何在RecyclerView滑动中停止 ...

  8. RecyclerView使用 及 滑动时加载图片优化方案,android应用程序开发语言

    // Provide a reference to the type of views that you are using (custom viewholder) //自定义的ViewHolder, ...

  9. RecyclerView使用 及 滑动时加载图片优化方案,GitHub上标星13k的《Android面试突击版》

    setContentView(R.layout.my_activity); mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_v ...

最新文章

  1. JAVA-初步认识-第三章-if语句练习-星期和季节
  2. Git的思想和基本工作原理
  3. 【问题记录】pytorch自定义数据集 No such file or directory, invalid index of a 0-dim
  4. [RN] React Native 实现 类似京东 的 沉浸式状态栏和搜索栏
  5. 学习ModSecrity Handbook之摘录
  6. html 文本框 自动拼接,HTML 中table的结构以及拼接
  7. html tab与jQuery,使用jquery实现div的tab切换实例代码
  8. mysql 4.0手工注入_手工注入——MySQL手工注入实战和分析
  9. Tri_integral Summer Training 9 总结
  10. [论文阅读] Learning Without Forgetting
  11. 2018年全国多校算法寒假训练营练习比赛(第一场)D. N阶汉诺塔变形(找规律)
  12. .net Cache 需要注意的地方
  13. ×××全功能邮件系统(6)
  14. 翻译:swift 5初始化 被忽略的Convenience便捷初始化、Required和继承
  15. DiskFileItemFactory
  16. fly bird用java怎么写,java-flybird_wang-51CTO博客
  17. OpenSSL之自签名证书认证
  18. 面向大规模商业系统的数据库设计和实践
  19. 设计模式之Bridge模式(桥接模式)
  20. NIO编程--聊天室Demo

热门文章

  1. html ios滚轮效果控件,深入研究-webkit-overflow-scrolling:touch及ios滚动
  2. css鼠标拖拉卡顿_详解overflow-scrolling解决滚动卡顿问题
  3. 16进制每一位存到数组里头
  4. BPI-R3开发板 - uboot编译
  5. pandas的算术运算和数据对齐
  6. 制作Ubuntu20.04系统盘
  7. Flutter开发之——动画-Gif动画
  8. 基于时间序列的玩家行为模式分析
  9. css3盒子模型微课_css3 盒模型记
  10. 基于51单片机PM2.5浓度检测超限报警Proteus仿真