这些时间做安卓盒子项目,因为安卓电视的显示器比较大,所以一个界面显示 很多数据 ,最多的时候,一个Actvity中用到了好几个RecyclerView。
在RecyclerView中实现Item选中处理时,发现用CheckBox的OnCheckedChangeListener监听事件时,会达不到预期,所以用了OnClickListener来实现。
主界面代码:
public class CheckRecyclerViewActivity extends AppCompatActivity implements CheckAdapter.CheckItemListener { //适配器 private CheckAdapter mCheckAdapter; //列表 private RecyclerView check_rcy; //全选操作 private CheckBox check_all_cb; //列表数据 private List<CheckBean> dataArray; //选中后的数据 private List<CheckBean> checkedList; private boolean isSelectAll; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_check_recyclerview); checkedList = new ArrayList<>(); initDatas(); initViews(); } private void initViews() { check_rcy = (RecyclerView) findViewById(R.id.check_rcy); check_all_cb = (CheckBox) findViewById(R.id.check_all_cb); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); check_rcy.setLayoutManager(linearLayoutManager); mCheckAdapter = new CheckAdapter(this, dataArray, this); check_rcy.setAdapter(mCheckAdapter); //如果使用CheckBox的OnCheckedChangeListener事件,则选中事件会有一些意想不到的结果,欢迎体验 //在列表Item中的CheckBox也一样的效果 check_all_cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { isSelectAll = !isSelectAll; checkedList.clear(); if (isSelectAll) {//全选处理 checkedList.addAll(dataArray); } for (CheckBean checkBean : dataArray) { checkBean.setChecked(isSelectAll); } mCheckAdapter.notifyDataSetChanged(); } }); } private void initDatas() { dataArray = new ArrayList<>(); for (int i = 0; i < 20; i++) { CheckBean bean = new CheckBean(); bean.setOrder(String.valueOf(i + 1)); bean.setName("名称_" + i); bean.setContent("第" + i + "条内容"); bean.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); dataArray.add(bean); } } @Override public void itemChecked(CheckBean checkBean, boolean isChecked) { //处理Item点击选中回调事件 if (isChecked) { //选中处理 if (!checkedList.contains(checkBean)) { checkedList.add(checkBean); } } else { //未选中处理 if (checkedList.contains(checkBean)) { checkedList.remove(checkBean); } } //判断列表数据是否全部选中 if (checkedList.size() == dataArray.size()) { check_all_cb.setChecked(true); } else { check_all_cb.setChecked(false); } } }
列表数据适配器:
public class CheckAdapter extends RecyclerView.Adapter<CheckAdapter.ViewHolder> { private Context mContext; private List<CheckBean> mDatas; private CheckItemListener mCheckListener; public CheckAdapter(Context mContext, List<CheckBean> mDatas, CheckItemListener mCheckListener) { this.mContext = mContext; this.mDatas = mDatas; this.mCheckListener = mCheckListener; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.check_recyclerview_item, parent, false); ViewHolder viewHolder = new ViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { final CheckBean bean = mDatas.get(position); holder.item_order_tv.setText(bean.getOrder()); holder.item_name_tv.setText(bean.getName()); holder.item_content_tv.setText(bean.getContent()); holder.item_time_tv.setText(bean.getTime()); holder.item_cb.setChecked(bean.isChecked()); //点击实现选择功能,当然可以把点击事件放在item_cb对应的CheckBox上,只是焦点范围较小 holder.item_content_ll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { bean.setChecked(!bean.isChecked()); holder.item_cb.setChecked(bean.isChecked()); if (null != mCheckListener) { mCheckListener.itemChecked(bean, holder.item_cb.isChecked()); } notifyDataSetChanged(); } }); } @Override public int getItemCount() { return mDatas.size(); } public class ViewHolder extends RecyclerView.ViewHolder { //序号 private TextView item_order_tv; //选择 private CheckBox item_cb; //整个条目 private LinearLayout item_content_ll; //名称 TextView item_name_tv; //内容 TextView item_content_tv; //时间 private TextView item_time_tv; public ViewHolder(View itemView) { super(itemView); item_order_tv = (TextView) itemView.findViewById(R.id.item_order_tv); item_cb = (CheckBox) itemView.findViewById(R.id.item_cb); item_name_tv = (TextView) itemView.findViewById(R.id.item_name_tv); item_content_tv = (TextView) itemView.findViewById(R.id.item_content_tv); item_time_tv = (TextView) itemView.findViewById(R.id.item_time_tv); item_content_ll = (LinearLayout) itemView.findViewById(R.id.item_content_ll); } } public interface CheckItemListener { void itemChecked(CheckBean checkBean, boolean isChecked); } }
测试数据实体BEAN:
public class CheckBean implements Serializable { private String order; private String name; private String content; private String time; private boolean isChecked; public String getOrder() { return order; } public void setOrder(String order) { this.order = order; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public boolean isChecked() { return isChecked; } public void setChecked(boolean checked) { isChecked = checked; } }
主界面布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" android:background="@drawable/drawable_white_round_bg" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="20dp" android:orientation="horizontal"> <TextView android:layout_width="40dp" android:layout_height="match_parent" android:text="序号" android:layout_marginLeft="10dp" android:textSize="12sp" android:textColor="#333333" android:gravity="center" /> <CheckBox android:id="@+id/check_all_cb" android:layout_width="12dp" android:layout_gravity="center" android:button="@null" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_height="12dp" android:background="@drawable/drawable_cb_selector" /> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:text="名称" android:layout_marginLeft="10dp" android:textSize="12sp" android:textColor="#333333" android:gravity="center" /> <TextView android:layout_width="100dp" android:layout_height="match_parent" android:text="内容" android:layout_marginLeft="10dp" android:textSize="12sp" android:textColor="#333333" android:gravity="center" /> <TextView android:layout_width="80dp" android:layout_height="match_parent" android:text="时间" android:layout_marginLeft="10dp" android:textSize="12sp" android:textColor="#333333" android:gravity="center" /> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1px" android:background="#bcbcbc"></View> <android.support.v7.widget.RecyclerView android:id="@+id/check_rcy" android:layout_width="match_parent" android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView> </LinearLayout>
列表Item布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/item_content_ll" android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:id="@+id/item_order_tv" android:layout_width="40dp" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:textSize="15sp" android:textColor="#333333" android:gravity="center" /> <CheckBox android:id="@+id/item_cb" android:layout_width="20dp" android:layout_gravity="center" android:button="@null" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_height="20dp" android:background="@drawable/drawable_cb_selector" /> <TextView android:id="@+id/item_name_tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:textSize="15sp" android:textColor="#333333" android:gravity="center" /> <TextView android:id="@+id/item_content_tv" android:layout_width="100dp" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:textSize="15sp" android:textColor="#333333" android:gravity="center" /> <TextView android:id="@+id/item_time_tv" android:layout_width="120dp" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:textSize="15sp" android:textColor="#333333" android:gravity="center" /> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1px" android:background="#bcbcbc"/> </LinearLayout>
界面布局是随意写的,请根据实际情况调整。上丑图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Android实现多级树形选择列表,包括了Android实现多级树形选择列表的使用技巧和注意事项,需要的朋友参考一下 项目中有多个地方要用到多级列表的菜单,最开始我用的是ExpandableListView,但问题是ExpandableListView只支持两级列表,于是我就用ExpandableListView嵌套ExpandableListView,但非常麻烦,而且关键的是具体分
本文向大家介绍Android RecyclerView选择多个item的实现代码,包括了Android RecyclerView选择多个item的实现代码的使用技巧和注意事项,需要的朋友参考一下 模仿网易新闻客户端阅读偏好的频道选择,先看实现的页面: 直接上代码: 布局文件RecyclerView横竖都是“match_parent”,否则在点击的时候gridView会自动上滑一段距离。 适配器的实
本文向大家介绍Android RecyclerView实现下拉列表功能,包括了Android RecyclerView实现下拉列表功能的使用技巧和注意事项,需要的朋友参考一下 现在市面上的很多的应用,都带有下拉列表的功能,将所有选项都放在下拉列表中,当用户点击选择的时候,弹出所有的选项,用户选择一项后,下拉列表自动隐藏,很多下拉列表都是用ListView + PopupWindow来实现的,由于G
本文向大家介绍Android组件实现列表选择框功能,包括了Android组件实现列表选择框功能的使用技巧和注意事项,需要的朋友参考一下 android提供的列表选择框(Spinner)相当于web端用户注册时的选择下拉框,比如注册候选择省份城市等。如下图便是一个列表选择框 下拉列表的列表选择项能够通过xml文件的android:entries属性指定,或是在java代码中导入,属性android:
本文向大家介绍Android实现单项、多项选择操作,包括了Android实现单项、多项选择操作的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android实现单项、多项选择操作的相关代码,供大家参考,具体内容如下 1、单项选择 1.1.布局 1.2.Java文件 效果图: 2、多项选择 2.1.布局 2.2.Java文件 效果图: 以上就是本文的全部内容,希望对大家学习Andro
本文向大家介绍yii2使用gridView实现下拉列表筛选数据,包括了yii2使用gridView实现下拉列表筛选数据的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了yii2 gridView下拉列表筛选数据的具体代码,供大家参考,具体内容如下 view: model: 效果: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
我想将更改为。我想使用中的的来确定用户是否滚动到列表的末尾。 我如何知道用户是否滚动到列表的末尾,以便我可以从REST服务中获取新的数据?
有人知道如何使用Spring数据JPA获得一个列吗?我在我的Spring Boot项目中创建了一个存储库,如下所示,但总是得到