前言
横向滑动列表有多种实现方式,也可以用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>
总结
以上就是实现横向列表的功能了,很简单,需要自取。