RecylerView实现瀑布流效果

本文详细介绍了在Android开发中使用RecyclerView进行数据展示的方法,包括自定义Adapter、使用Picasso加载图片、处理网络请求及更新UI的过程。通过示例代码,展示了如何结合OkHttp进行数据获取,并在主线程中更新界面。
部署运行你感兴趣的模型镜像

在activity中写入

//获取控件
recyclerView = view.findViewById(R.id.rv);

    RecyProcenter procenter = new RecyProcenter(this);
    procenter.RecyNets("http://www.zhaoapi.cn/product/getCarts?uid=71&source=1.0.1\t");
    recyAdapder = new RecyAdapder(mList, getContext());
    return view;
}
@Override
public void isRecyList(List list) {
     mList.addAll(list);
    handler.post(new Runnable() {
        @Override
        public void run() {

//设置适配器
recyAdapder.setList(mList);
recyclerView.setAdapter(recyAdapder);
}
});

}
//Okhttp网络请求后更新UI使用
Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);


    }
};

编写Adapder类
package com.umeng.soexample.adapder;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.squareup.picasso.Picasso;
import com.umeng.soexample.R;
import com.umeng.soexample.bean.User;

import java.util.ArrayList;
import java.util.List;

public class RecyAdapder extends RecyclerView.Adapter<RecyAdapder.MyViewHolder> {
private List<User.DataBean> list;
private Context mContext;

public RecyAdapder(List<User.DataBean> list, Context mContext) {
    this.list = list;
    this.mContext = mContext;
}

public void setList(List<User.DataBean> list) {
    this.list = list;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.recyitem, viewGroup, false);
    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {

//截取图片
User.DataBean dataBean = list.get(i);
List<User.DataBean.ListBean> list = dataBean.getList();
for (int i1 = 0; i1 < list.size(); i1++) {
User.DataBean.ListBean listBean = list.get(i1);
String images = listBean.getImages();
int i2 = images.indexOf("|");
if (i2 != -1) {
String imagess = images.substring(0, i2);
Picasso.with(mContext).load(imagess).into(myViewHolder.textView);
} else {
Picasso.with(mContext).load(images).into(myViewHolder.textView);
}

    }
    //设置瀑布流布局
    if (i % 2!= 0) {
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(myViewHolder.textView.getLayoutParams());
        params.setMargins(0,100,0,0);
        myViewHolder.textView.setLayoutParams(params);
    }else{
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(myViewHolder.textView.getLayoutParams());
        params.setMargins(0,20,0,0);
        myViewHolder.textView.setLayoutParams(params);

    }
}

@Override
public int getItemCount() {
    return list == null ? 0 : list.size();
}

class MyViewHolder extends RecyclerView.ViewHolder {
    ImageView textView;

    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
        textView = itemView.findViewById(R.id.tq);

    }
}

}

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

在移动开发领域,Android Studio 是谷歌推出的官方集成开发环境(IDE),专门用于开发 Android 应用。本项目旨在通过 Android Studio 创建一个模仿行生活分享平台小红书的简单应用。小红书以其强大的社交功能和丰富的用户生成内容而闻名,融合了购物、博客和社交媒体的特点。通过复刻小红书,开发者可以学习构建类似的混合型应用。 1. Android Studio 核心知识点 界面设计:利用 Android Studio 的布局编辑器(可通过 XML 编码或拖放操作)来构建用户界面,涵盖 TextView、ImageView、RecyclerView 等多种组件。 主题与样式:掌握 Material Design 的应用,自定义主题和样式,以实现类似小红书的视觉效果。 Activity 与 Fragment:理解 Activity 和 Fragment 的生命周期,以及它们在多屏幕适配中的作用。 Intent:通过 Intent 实现页面跳转和数据传递。 2. 小红书 App 特性实现 登录注册:实现用户登录和注册功能,可能涉及 OAuth 或自定义认证机制。 数据获取与展示:使用网络请求库(如 Retrofit 或 OkHttp)从服务器获取数据,并通过 RecyclerView 展示,可能采用瀑布布局。 图片加载:借助图片加载库(如 Glide 或 Picasso)优化图片加载速度和性能。 社交功能:实现评论、点赞、分享等社交功能,涉及数据库操作和网络通信。 动态通知:集成 Firebase Cloud Messaging(FCM)实现即时消息推送。 3. Android SDK 与相关库 Android SDK:熟悉不同版本的 Android API,确保应用的兼容性。 Room Persistence Library:用于本地数据库存储,缓存
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值