代码如下: 主要的参数是 mPosition

public class SubjectListAdapter extends RecyclerView.Adapter<SubjectListAdapter.MyViewHolder> {
        private List<String> dataList;
        private Context context;
        private List<Boolean> isClicks = new ArrayList<>(); // 控件是否被点击,默认为 false,如果被点击,改变值,控件根据值改变自身颜色
        private int mPosition = 0;
        //构造方法,传入数据
        public SubjectListAdapter(Context context, List<String> dataList){
            this.context = context;
            this.dataList = dataList;
        @NonNull
        @Override
        public SubjectListAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.subject_item, parent, false);
            MyViewHolder holder = new MyViewHolder(view);
            return holder;
        @Override
        public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
            final String subjectString = dataList.get(position);
            // 赋值
            holder.tv_subject_name.setText(subjectString);
            // 设置默认选择第一个
            if (mPosition != position) {
                holder.tv_subject_name.setTextSize(12);
                holder.tv_subject_name.getPaint().setFakeBoldText(false);
                holder.rl_subject.setBackgroundResource(R.drawable.main_background);
            }else if (mPosition == position) {
                holder.tv_subject_name.setTextSize(14);
                holder.tv_subject_name.getPaint().setFakeBoldText(true);
                holder.rl_subject.setBackgroundResource(R.drawable.bag_subject_item_selected);
            holder.rl_subject.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mPosition = position; // 选中点击的位置
                    notifyDataSetChanged(); // 更新数据
            });
        @Override
        public int getItemCount() {
            return dataList.size();
        //内部类,绑定控件
        class MyViewHolder extends RecyclerView.ViewHolder{
            TextView tv_subject_name;
            LinearLayout rl_subject;
            public MyViewHolder(View view) {
                super(view);
                tv_subject_name = view.findViewById(R.id.tv_subject_name);
                rl_subject = view.findViewById(R.id.rl_subject);
                    问题描述:RecycleView 中默认选择第一个 item,点击第 2 个 item 时改变其字体样式,其余的 item 的字体样式恢复默认代码如下: 主要的参数是 mPositionpublic class SubjectListAdapter extends RecyclerView.Adapter&lt;SubjectListAdapter.MyViewHolder&gt; {        private List&lt;String&gt; dataList;        p
//   传入点击的位置
    public void setThisPosition(int thisPosition) {
        this.thisPosition = thisPosition;
        notifyDataSetChanged();
 @NonN
				
RecyclerView 关于Item选中,取消选中的完美实现 很多候要用到RecycelerView做数据的显示处理,点击选中及再次点击取消选中的操作,也看了一些其他博主写的相关博客,但总感觉8太行,要么过于冗余,要么描述不清,这需求比较简单,所以逻辑也应简洁明了。正好这些天工作上有相关的需求,所以记录一下我的实现过程。 老规矩先看效果: (1)先新建一个TestAdapter.java,ViewHolder就定义了一个简单的TextView。然后就是 onCreateViewHolder(
项目发现在在切换fragment(Fragment带有RecyclerViewrecyclerView的焦点总是默认第一个item上,并且带有选中状态,事实上我并没有设置item选中状态。多次测试发现,只在Android8.0(MIUI不会出现)以上才会出现这样的问题。 查看官方文档,发现如下内容: 现在,如果您没有为View对象(前景或背景图片)定义任何焦点状态颜色,框架会为Vi...
在写RecyclerVIew的适配器,我们都要重写一个方法onBindViewHolder,这个方法在何会执行呢?只要有一个item进入了手机界面(只要有item进入了手机界面,那么就会被加载),那么这个方法就会执行,对于的position就是这个item的下标。 比如现在有界面14个测试item 我们在onBindViewHolder方法通过Log.d输出以下内容 Log.d("onBindViewHolder","item"+position); 可以看到确实输出了14个item.
最近在开发安卓TV项目,列表调用notifyDataSetChanged()方法刷新数据,焦点自动就变成第一个item去了,查了半天发现用notifyItemRangeChanged(0,list.size());用这个方法去刷新数据,焦点就不会乱跳了,但是出现了界面闪一下的情况,使用以下方法解决界面刷新数据闪动的BUG recyclerview.setHasFixedSize(true); ((SimpleItemAnimator)(recyclerview.getItemAnimator())).
//进入成员列表默认首选项,ptt按键可以直接单呼选中成员形成单呼群组 start if (position ==0 ){ rl_item.setEnabled(true); rl_item.setFocusableInTouchMode(true); rl_item.requestFocus(); rl_item.requestFocusFromTouch(); setLastFoucePosition(position); EventBus.getDefault().post(new Event // 在ViewHolderitemView设置点击事件监听器 public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { public MyViewHolder(View itemView) { super(itemView); itemView.setOnClickListener(this); @Override public void onClick(View view) { // 获取点击item位置 int position = getAdapterPosition(); // 创建PopupWindow对象 PopupWindow popupWindow = new PopupWindow(context); // 设置PopupWindow的宽度和高度 popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); // 设置PopupWindow的内容视图 View popupView = LayoutInflater.from(context).inflate(R.layout.popup_layout, null); popupWindow.setContentView(popupView); // 显示PopupWindow popupWindow.showAsDropDown(view); 上面的代码,我们为RecyclerView的每一个item的视图View设置了一个点击事件监听器,当用户点击某个item,会通过getAdapterPosition()方法获取当前点击item位置。然后我们创建了一个PopupWindow对象,并设置它的宽度、高度和内容视图。最后调用showAsDropDown()方法将PopupWindow显示在当前点击item的下方。当然,这只是一个简单的示例,你可以根据实际需求来自定义你的PopupWindow。 【报错】ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds t 95995 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request p 27049 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request p 用了,但还是报错呀靓仔 Win10系统版本号太低,而无法安装像AI和PS这样的软件怎么办? weixin_47647424: 我也是,依然检测旧版本 Android --- Gradle是什么? 宇宙的最后一粒尘埃: 哈哈你小子表情包 模拟一:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记 梁同学与Android: 你把内容复制到word文档中,然后用word文档去打印店打印 模拟一:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记 2301_77465727: 怎么样能打印出来给孩子做题