Android之横向滑动列表


前言

横向滑动列表有多种实现方式,也可以用tablayout,也可以用recyclerview,今天主要介绍recyclerview。


一、效果图

在这里插入图片描述

二、使用步骤

1.xml布局

代码如下(示例):

		<androidx.recyclerview.widget.RecyclerView
            android:id="@+id/hxlist"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="10dp"
            android:layout_marginRight="15dp"
            android:overScrollMode="never"
            android:scrollbars="none" />

2.代码

//实例化
 private lateinit var hxlist: RecyclerView
 private lateinit var zpkjadapter: ZpkjAdapter1
 private lateinit var hxbean: MutableList<HomeHxBean>

  hxbean = mutableListOf()
   for (i in 1..5) {
            var item = HomeHxBean()
            item.id = "" + i
            item.name = "广告任务$i"
            if (i == 1) {
                item.isxz = true
            } else {
                item.isxz = false
            }
            hxbean.add(item)
        }
  hxlist = rootView!!.findViewById(R.id.hxlist)
        hxlist.layoutManager = LinearLayoutManager(
            requireContext(),
            LinearLayoutManager.HORIZONTAL,
            false
        ) //横向显示
 zpkjadapter = ZpkjAdapter1(hxbean, requireContext())
 hxlist.adapter = zpkjadapter

3.HomeHxBean

public class HomeHxBean {
    public String id;
    public String name;
    public boolean isxz=false;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isIsxz() {
        return isxz;
    }

    public void setIsxz(boolean isxz) {
        this.isxz = isxz;
    }

    @Override
    public String toString() {
        return "HomeHxBean{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", isxz=" + isxz +
                '}';
    }
}

3.adapter

/**
 * 作者:CaoLiulang
 * ❤
 * Date:2024/12/24
 * ❤
 * 模块 横向listadapter
 */
public class ZpkjAdapter1 extends RecyclerView.Adapter<ZpkjAdapter1.ViewHolder> {
    private List<HomeHxBean> list;
    private Context context;


    public ZpkjAdapter1(List<HomeHxBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    /**
     * 加载更多
     *
     * @param mPageList
     */
    public void setData(List<HomeHxBean> mPageList) {
        try {
            if (mPageList != null) {
                int previousSize = 0;
                try {
                    previousSize = list.size();
                } catch (Exception e) {
                    previousSize = 0;
                }
                int sizez = previousSize + 2;
                list.addAll(mPageList);
                notifyItemRangeInserted(sizez, mPageList.size());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.hxlistmy_item1, parent, false);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }

    /**
     * 类似GetView
     *
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(final ViewHolder holder, @SuppressLint("RecyclerView") final int position) {
        System.out.println("数据打印:-->" + list.get(position).name);
        holder.text_szr.setText(list.get(position).name);
        if (list.get(position).isxz) {
            holder.text_szr.setBackgroundResource(R.drawable.bzhs_lvse_20);
            holder.text_szr.setTextColor(Color.parseColor("#ffffff"));
        } else {
            holder.text_szr.setBackgroundResource(R.drawable.bzhs_huise_20);
            holder.text_szr.setTextColor(Color.parseColor("#4d061C1A"));
        }
        holder.text_szr.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                for (int i = 0; i < list.size(); i++) {
                    list.get(i).isxz = false;
                }
                list.get(position).isxz = true;
                notifyDataSetChanged();
            }
        });
    }

    //添加元素,需要告诉UI线程布局的变动
    public void update() {
        notifyDataSetChanged();
    }

    /**
     * 长度
     *
     * @return
     */
    @Override
    public int getItemCount() {
        return list.size();
    }

    /**
     * 初始化组件
     */
    class ViewHolder extends RecyclerView.ViewHolder {
        TextView text_szr;

        public ViewHolder(final View itemView) {
            super(itemView);
            text_szr = itemView.findViewById(R.id.text_szr);
        }
    }
}

4.item布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="32dp">
    <TextView
        android:id="@+id/text_szr"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@drawable/bzhs_lvse_20"
        android:gravity="center"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:layout_marginRight="10dp"
        android:text="广告任务"
        android:textColor="#ffffff"
        android:textSize="16dp" />

</LinearLayout>

5.两个drawable

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 背景颜色 -->
    <solid android:color="#02C7AB" />

    <!-- 控制边界线颜色和大小 -->
    <stroke
        android:width="1dp"
        android:color="#02C7AB" />

    <!-- 控制圆角大小 -->
    <corners android:radius="20dp" />

</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 背景颜色 -->
    <solid android:color="#F1F1F1" />

    <!-- 控制边界线颜色和大小 -->
    <stroke
        android:width="1dp"
        android:color="#F1F1F1" />

    <!-- 控制圆角大小 -->
    <corners android:radius="20dp" />

</shape>

总结

以上就是实现横向列表的功能了,很简单,需要自取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶已初秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值