RecyclerView的item的selected、click以及按键响应操作的简单demo

Python实战:超分辨率图像质量评估全攻略——PSNR、SSIM、LPIPS与NIQE的代码实现与优化 本文详细介绍了在Python中实现超分辨率图像质量评估的完整方案,涵盖PSNR、SSIM、LPIPS和NIQE四大核心指标。通过模块化代码设计、多进程并行处理和GPU加速优化,帮助开发者构建高效、可扩展的评估系统,并提供了实战避坑指南与结果解读方法。 阅读详情

                    RecyclerView的item的selected、click以及按键响应操作的简单demo

1、在布局文件中定义 RecyclerView。

<android.support.v17.leanback.widget.HorizontalGridView
    android:id="@+id/horizontal_gridView_channel_group"
    android:layout_width="match_parent"
    android:layout_height="160dp"
    android:layout_below="@+id/recyclerView_title"
    android:layout_marginStart="10dp"
    android:layout_marginTop="10dp">
</android.support.v17.leanback.widget.HorizontalGridView>

     HorizontalGridView是一个非常实用的水平方向的RecyclerView,它最大的特点就是焦点项始终是显示在正中间的位置。如下图中的Movies项。

2、定义RecyclerView的适配器

package com.amlogic.dvb_adapter;

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

import com.amlogic.DVBPlayer.R;
import com.amlogic.dvb_entity.GroupInfo;
import com.amlogic.dvb_interface.OnRecycleViewItemClickListener;
import com.amlogic.dvb_interface.OnRecycleViewItemSelectListener;
import com.amlogic.dvb_interface.OnRecyclerViewItemKeyListener;
import com.amlogic.dvb_util.ContactsUtil;
import com.amlogic.dvb_util.CornerUtil;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;

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

import static com.amlogic.DVBPlayer.AndroidNineMainMenu.CHANNEL_GROUP_RECYCLERVIEW_TAG;
import static com.amlogic.DVBPlayer.AndroidNineMainMenu.SETTINGS_HELP;
import static com.amlogic.DVBPlayer.AndroidNineMainMenu.SETTINGS_MYLIBRARY;
import static com.amlogic.DVBPlayer.AndroidNineMainMenu.SETTINGS_SYSTEM_ONLY;
import static com.amlogic.DVBPlayer.AndroidNineMainMenu.SETTINGS_USER_SETUP;
import static com.amlogic.DVBPlayer.AndroidNineMainMenu.TITLE_SETTINGS_ITEM;

public class ChannelGroupHorizontalGridViewAdapter extends RecyclerView.Adapter<ChannelGroupHorizontalGridViewHolder> {
    private OnRecycleViewItemSelectListener mOnItemSelectLister;
    private OnRecycleViewItemClickListener mOnItemClickLister;
    private OnRecyclerViewItemKeyListener mOnKeyListener;

    private List<GroupInfo> mGropuInfos;
    private Context mContext;
    private int current_title_index;

    private int[] textViewDefault = {R.drawable.txt_default_blue, R.drawable.txt_default_orange, R.drawable.txt_default_purple, R.drawable.txt_default_red, R.drawable.txt_default_yellow};
    private int[] imgViewDefault  = {R.drawable.img_default_blue, R.drawable.img_default_orange, R.drawable.img_default_purple, R.drawable.img_default_red, R.drawable.img_default_yellow};

    public ChannelGroupHorizontalGridViewAdapter(Context context, List<GroupInfo> groupInfos, int title_index) {
        if (mGropuInfos == null) {
            mGropuInfos = new ArrayList<>();
        }
        mGropuInfos.clear();
        mGropuInfos.addAll(groupInfos);

        current_title_index = title_index;
        mContext = context;
    }

    @NonNull
    @Override
    public ChannelGroupHorizontalGridViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.channel_recycleview_item, viewGroup, false);
        view.setTag(CHANNEL_GROUP_RECYCLERVIEW_TAG);
        ChannelGroupHorizontalGridViewHolder holder = new ChannelGroupHorizontalGridViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ChannelGroupHorizontalGridViewHolder viewHolder, final int position) {
        ChannelGroupHorizontalGridViewHolder ViewHolder = (ChannelGroupHorizontalGridViewHolder) viewHolder;
        TextView textView = (TextView) ViewHolder.item_name;
        ImageView imageView = (ImageView) ViewHolder.item_background;

        textView.setText(mGropuInfos.get(position).getName());
        ContactsUtil.Set_TextView_Typeface(ContactsUtil.contextTypeFace, textView);

        if (mOnItemSelectLister != null) {
            viewHolder.itemView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
                    mOnItemSelectLister.onItemSelected(view, position, hasFocus);
                }
            });
        }

        if (mOnItemClickLister != null) {
            viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mOnItemClickLister.onItemClick(view, position);
                }
            });
        }

        if (mOnKeyListener != null) {
            viewHolder.itemView.setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    return mOnKeyListener.recyclerViewItemOnKey(v, keyCode, event, position);
                }
            });
        }

        Log.d("wujiang", "ChannelGroupHorizontalGridViewAdapter: current_title_index = " + current_title_index);

        if (current_title_index == TITLE_SETTINGS_ITEM) {
            textView.setBackgroundResource(R.drawable.translucent_background);
            switch (position) {
                case SETTINGS_HELP:
                    Glide.with(mContext).load(R.drawable.ic_help).placeholder(R.drawable.ic_help).into(imageView);
                    break;

                case SETTINGS_MYLIBRARY:
                    Glide.with(mContext).load(R.drawable.ic_my_library).placeholder(R.drawable.ic_my_library).into(imageView);
                    break;

                case SETTINGS_USER_SETUP:
                    Glide.with(mContext).load(R.drawable.ic_user_setup).placeholder(R.drawable.ic_user_setup).into(imageView);
                    break;

                case SETTINGS_SYSTEM_ONLY:
                    Glide.with(mContext).load(R.drawable.ic_settings).placeholder(R.drawable.ic_settings).into(imageView);
                    break;
            }
        } else {
            int index;
            if (position == 0) {
                index = 0;
            } else {
                index = position % textViewDefault.length;
            }

            Glide.with(imageView.getContext()).load(imgViewDefault[index]).placeholder(imgViewDefault[index]).into(imageView);
            textView.setBackgroundResource(textViewDefault[index]);
        }
    }

    @Override
    public void onViewRecycled(ChannelGroupHorizontalGridViewHolder holder) {
        if (holder != null) {
            Glide.clear(holder.item_background);
        }
        super.onViewRecycled(holder);
    }

    @Override
    public int getItemCount() {
        return mGropuInfos.size();
    }

    @Override
    public int getItemViewType(int position) {
        return 0;
    }

    public void setOnItemSelectListener(OnRecycleViewItemSelectListener listener) {
        mOnItemSelectLister = listener;
    }

    public void setOnItemClickLister(OnRecycleViewItemClickListener listener) {
        mOnItemClickLister = listener;
    }

    public void setOnKeyListener(OnRecyclerViewItemKeyListener listener) {
        mOnKeyListener = listener;
    }

    public void setGroupInfors(List<GroupInfo> groupInfors, int title_index) {
        if (mGropuInfos == null) {
            mGropuInfos = new ArrayList<>();
        }
        mGropuInfos.clear();
        mGropuInfos.addAll(groupInfors);
        current_title_index = title_index;

        notifyDataSetChanged();
    }
}

  channel_recycleview_item.xml代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="230dp"
    android:layout_height="140dp"
    android:clipChildren="false"
    android:clipToPadding="false"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:gravity="center"
    android:paddingLeft="10dp"
    android:paddingTop="10dp">

    <RelativeLayout
        android:id="@+id/rl_item"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/transparent_yellow_view_selector"
        android:duplicateParentState="true"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="1.3dp"
            android:duplicateParentState="true"
            android:scaleType="fitXY" />

        <TextView
            android:id="@+id/textview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:duplicateParentState="true"
            android:gravity="bottom|center_horizontal"
            android:layout_margin="1.3dp"
            android:paddingBottom="6dp"
            android:textColor="@drawable/nine_listview_textcolor_selector_02"
            android:textSize="20dp" />
    </RelativeLayout>
</RelativeLayout>

       要让最外层的RelativeLayout拥有获取焦点的权利,于是给它加上android:focusable="true"属性。子控件如果想保持和父控件一样的状态(焦点状态时子控件不是真正获取了焦点),加上android:duplicateParentState="true"属性即可。例如上面id为textview的TextView,它的textColor是一个drawable,它里面定义了有焦点状态和无焦点状态时字体的颜色:

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

    <item android:color="@color/yellow" android:state_selected="true" />

    <item android:color="@color/yellow" android:state_focused="true" />

    <item android:color="@color/white" android:state_focused="false" />

    <item android:color="@color/white" />
</selector>

  ChannelGroupHorizontalGridViewHolder.java代码

package com.amlogic.dvb_adapter;

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.amlogic.DVBPlayer.R;
import com.amlogic.dvb_util.CornerUtil;

public class ChannelGroupHorizontalGridViewHolder extends RecyclerView.ViewHolder {
    public TextView item_name;
    public ImageView item_background;

    public ChannelGroupHorizontalGridViewHolder(View view) {
        super(view);
        item_name = (TextView) view.findViewById(R.id.textview);
        item_background = (ImageView) view.findViewById(R.id.image);

        //切圆角(在我博客可以找到这个工具类)
        CornerUtil.clipViewCornerByDp(item_name, 8);
        CornerUtil.clipViewCornerByDp(item_background, 8);
    }
}

  OnRecycleViewItemClickListener.java代码,item点击事件接口。

package com.amlogic.dvb_interface;

import android.view.View;

public interface OnRecycleViewItemClickListener {
    void onItemClick(View view,int position);
}

  OnRecycleViewItemSelectListener.java代码,item选中事件接口。

package com.amlogic.dvb_interface;

import android.view.View;

public interface OnRecycleViewItemSelectListener {
    void onItemSelected(View view, int position, boolean hasFocus);
}

  OnRecyclerViewItemKeyListener.java代码,item按键事件接口。

package com.amlogic.dvb_interface;

import android.view.KeyEvent;
import android.view.View;

//这里特意带上了position,可以做一些位置的判断
public interface OnRecyclerViewItemKeyListener {
    boolean recyclerViewItemOnKey(View view, int keyCode, KeyEvent event, int position);
}

3、接口的实现。

     上面的代码是我自己项目里的,我们只需要关注焦点选中、点击、按键事件的相关代码。

mChannelGroupHorizontalGridView = getView().findViewById(R.id.horizontal_gridView_channel_group);
mChannelGroupHorizontalGridViewAdapter = new ChannelGroupHorizontalGridViewAdapter(mDVBPlayer, mChannelGroupInfoList, TITLE_MAIN_ITEM);
initChannelGroupHorizontalGridViewListener();
mChannelGroupHorizontalGridView.setAdapter(mChannelGroupHorizontalGridViewAdapter);

  initChannelGroupHorizontalGridViewListener中实现了选中、click、按键接口。

private void initChannelGroupHorizontalGridViewListener() {
        //item选中事件
        mChannelGroupHorizontalGridViewAdapter.setOnItemSelectListener(new OnRecycleViewItemSelectListener() {
            @Override
            public void onItemSelected(View view, int position, boolean hasFocus) {
                mSettingsTitleRecyclerViewCurrentPosition = position;

                ObjectAnimator animator1;
                ObjectAnimator animator2;
                if(hasFocus == true) {
                    Log.d("wujiang", "initChannelGroupHorizontalGridViewListener onItemSelected: 1 position = " + position);

                    animator1 = ObjectAnimator.ofFloat(view, "scaleX", 1f, 1.05f);
                    animator2 = ObjectAnimator.ofFloat(view, "scaleY", 1f, 1.05f);
                } else {
                    Log.d("wujiang", "initChannelGroupHorizontalGridViewListener onItemSelected: 2 position = " + position);
                    animator1 = ObjectAnimator.ofFloat(view, "scaleX", 1.05f, 1f);
                    animator2 = ObjectAnimator.ofFloat(view, "scaleY", 1.05f, 1f);
                }

                AnimatorSet animSet = new AnimatorSet();
                animSet.setDuration(200);
                animSet.playTogether(animator1, animator2);
                animSet.start();
            }
        });

        //按键事件
        mChannelGroupHorizontalGridViewAdapter.setOnKeyListener(new OnRecyclerViewItemKeyListener() {
            @Override
            public boolean recyclerViewItemOnKey(View view, int keyCode, KeyEvent event, int position) {
                if (event.getAction() == KeyEvent.ACTION_UP) {
                    return false;
                }

                switch (keyCode) {
                    case KeyEvent.KEYCODE_DPAD_DOWN:
                            return true;
                        }
                        return false;
                }
                return false;
            }
        });

        //item click事件
        mChannelGroupHorizontalGridViewAdapter.setOnItemClickLister(new OnRecycleViewItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Log.d("wujiang", "initChannelGroupHorizontalGridViewListener onItemClick: position = " + position);
            }
        });
    }

  如果觉得可以,给个赞吧!

                                                                                            THE  END

FCC 首个扫地机器人豁免落地,Matic 凭什么抢先? Matic获FCC首个扫地机器人豁免,实为提前布局的合规姿态。其产品在美国组装,并采用已认证射频模组,虽未达65%美国成分门槛,但已具备“本土制造”优势。豁免本质是对既有合规状态的确认,而非解救。此举在商业上放大品牌价值,抢占“安全、合规、本土”叙事高地,凸显供应链安全正取代技术标准成为监管核心。未来合规成本将攀升,规则主导权仍在FCC手中。 阅读详情

相关推荐

使用 git一个仓库管理多个项目

我们需要在 git 里面创建一个空分支,该分支不继承任何提交,没有父节点,完全是一个干净的分支,这时候就需要使用 orphan。该命令会创建一个新的分支,并且该分支有前一个分支下的所有文件,我们不想提交任何内容,所以我们需要把当前内容全部删除。此时 master 分支已经有一个项目了,下面我们创建新的分支管理另一个项目。此时可以在该分支目录上初始化你的项目,在执行 git 命令提交代码。此时我们就完成了在同一个仓库管理不同项目的需求了。下载仓库到本地之后,进入项目目录,查看分支信息。

xrs151的博客 2027

RecyclerView的点击事件的两种实现方式

文章目录RecyclerView的点击事件(一)在适配器的onBindViewHolder方法中去添加响应事件(二)写回调方法 RecyclerView的点击事件 RecyclerView中没有提供类似与setOnItemClickListener()这样的注册监听方法,而需要我们自己给子项具体的View去注册点击事件。相比与ListView来说,RecyclerView的功能更加强大,不仅可以实现对点击子项的响应,而且对子项的每一个view都可以轻松的实现点击响应。 下面通过两种方法来实现: (一)在适配

iczfy585的博客 3504

用AT7456E给监控摄像头加OSD?5步搞定时间水印和Logo叠加

本文详细解析了如何使用AT7456E视频字符叠加芯片为监控系统添加专业级OSD功能,涵盖硬件设计、字符库编程和系统集成等关键步骤。通过5步操作实现时间水印和Logo叠加,提升监控系统的可用性和专业性,特别适合安防和工业视觉应用。

sea99的博客 1012

Android关于RecyclerView 设置选中效果和AndroidTV Item选中效果

关于RecyclerView 局部刷新和设置高亮的问题项目里需求2级菜单,要设置recyclerview高亮,博主还是改不了ListView的使用习惯,设置新增数据的isClick属性, 通过判断数据的recyclerview的点击item事件来设置isClick = true,以下见代码代码块nAdapter.setOnRecyclerViewItemClickListener(new BaseQ

dhyjtt的博客 8504

基于线性光耦HCNR200的高压直流采样电路设计与精度优化

本文详细介绍了基于线性光耦HCNR200的高压直流采样电路设计与精度优化方法。针对直流高电压测量中的安全与干扰问题,提出采用HCNR200光耦隔离方案,实现高精度线性传输。文章深入解析电路设计关键细节,包括电阻网络、运放选型、滤波电容配置等,并提供精度优化实战技巧与常见问题排查指南,助力新能源电动汽车和高压储能系统的高压直流采样应用。

weixin_42713608的博客 579

✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub

构建一个带 GPU 支持的深度学习开发镜像;使用 PyTorch 2.5.1(CUDA 12.4)环境;发布并托管 Docker 镜像至 Docker Hub;验证 GPU 环境正常运行!🎉 这将极大提升你的项目部署效率,尤其是在多人协作或跨平台部署场景中。

用大模型重构生活:猫奴程序员的AI智能日常记录 1578

android TV 通过按键控制RecyclerView中的item的选中,移动,点击功能

前言 android tv开发中常常会用到recyclerview展示内容,并且要处理好按键控制item的选中,移动,点击功能,会遇到失去焦点,recyclerview 获取childView获取不到,出现null的问题。下面介绍的一种方法,可以很方便的实现上述所说的功能,并且还不会出现上面的问题。 效果图 代码 实现代码 TvRecyclerViewDirectionControlSample...

weixin_33877885的博客 1130

STM32CubeIDE入坑指南

一 前言 在科技日新月异的今天,作为从事效率为先的苦逼 IT 行业,秉承着我不入地狱谁入地狱的伟大革命精神,我决定再一次做第一个吃螃蟹的人,通过自身的入坑过程,为大家测试STM32CubeIDE这款新式工具。(其实是为了我能省点时间,快点做完项目,多挣点钱买几瓶肾气丸) 二 看一看别人是如何入坑的 二 手把手带你入坑 三 相关资料 ...

CH的博客 1万+

android TV端 新手入门必备RecyclerView快速滑动不丢焦点,不需要限速!!!.当前焦点自动居中.

TV端焦点乱飞一直是很头疼的事情,现在给大家推荐一个不需要限速的TvRecyclerView简单好用,让你的TV端告别卡顿.还能有效减少在低配置机型上ANR的几率. tv端焦点移动限速代码,某些特定条件下需要加上限速的朋友可以用以下代码,在BaseActivity中加上 private long mLastKeyDownTime = 0; /** * 限速时间,可按需求增加或减...

qq_29965801的博客 2143

第六:Charles抓包-苹果手机抓包

【代码】第六:Charles抓包-苹果手机抓包。

欢迎来到本博客! 1658

解决pd.read_json报错ValueError: Trailing data问题

首先,我们使用open函数打开JSON文件,然后使用json.load函数将JSON文件数据解码为Python对象。在使用Python进行数据处理中,我们经常需要将JSON格式的数据读入到DataFrame中进行处理。而使用pandas库的read_json函数,就可以方便地将JSON数据读入到DataFrame中。但是有时候在读取JSON数据时,会遇到一个非常常见的错误:ValueError: Trailing data。这个错误的解决方案并不难,只需要在read_json中添加一个参数即可。

学习使你进步。 2234

recyclerview给item添加选中效果(多选)

大体实现思路: 使用相对布局,在recyclerview的item整体布局底层添加一个CheckBox,在adapter中引用一个Map标记选中CheckBox,然后在bandview中给CheckBox setOnCheckedChangeListener改变CheckBox背景、向Map中添加标记. demo链接在文末. 具体实现: 1.activity: RecyclerV

qq_34912129的博客 4189

openpi 入门教程(二)droid libero 训练、推理

OpenPI是由物理智能团队发布的机器人领域开源模型与软件平台,提供基于流扩散式(π₀)和自回归式(π₀-FAST)两类视觉-语言-动作模型。平台支持在DROID、ALOHA、UR5等多种机器人系统上部署,包含预训练检查点(1万+小时数据)和微调示例。文档详细说明了各平台部署流程:DROID需启动策略服务器并配置摄像头;ALOHA提供真实机器人任务(取吐司、叠毛巾等)的检查点和场景设置建议;UR5示例展示自定义数据转换方法。实验性验证显示π₀-FAST在LIBERO基准测试中平均得分85.5。平台强调模型适

2506_90492529的博客 1023

RecyclerView的item选中之后清除上一次选中的效果

RecyclerView点击某个位置的item时如何加上点击效果并且清除上一次选中item上的点击效果?

shengjiaxin的博客 615

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android keyevent列表,android-在RecyclerView视图上捕获KeyEvent

我通过添加常规和长按按钮来编辑帖子中的代码:@Overridepublic void onAttachedToRecyclerView(final RecyclerView recyclerView) {super.onAttachedToRecyclerView(recyclerView);mRecyclerView = recyclerView;// Handle key up and key...

weixin_42116650的博客 284

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

《JAVA从入门到精通视频》笔记七:方法、JVM内存结构

1.方法        方法是可以完成某个特定功能的并且可以被重复利用的代码片段。在C语言中,方法被称为“函数”。在java中,叫做方法。 2.方法的语法机制 [修饰符列表] 返回值类型 方法名(形式参数列表){        方法体; } 注:以上中括号[]里面的内容表示不是必须的,是可选的。 3.使用方法时注意:     &n

weixin_44384631的博客 643

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 横向单选,Android RecyclerView 定制单选多选模式

ListView的小插曲其实ListView或者说它们这一类都是实现了单选多选模式的,如果你使用CheckedTextview等实现了Checkable的子类的话,根本不用写什么代码,单选多选模式就搞定了。AdapterView.png* Register a callback to be invoked when an item in this AdapterView has* been sel...

weixin_29807369的博客 475

android根据物理按键上下选中listview的item,回车进入点击相应事件

最近做扫码枪程序,因应用于冷库,用户需求在列表选择上可以用上下键代替滑动,所以做了一个小demo,记录一下 话不多说,直接上代码 1.布局文件很简单 主界面: 一个输入框一个列表,因为是手持采集枪,输入框经常用到,所以在做demo的时候也加上了,不需要的可以忽略 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res

feng_zhongsha的博客 1435

AdapterView 的setOnItemClickListener 与子view setOnclick。

额,首先介绍一下adapterview吧。AbsListView ,AbsSpinner,AdapterViewAnimator 都是它的子类,所以啥ListView,GridView,Spinner 啥的都是其子类。这样在用到这些类的时候,都会遇到下面这些问题和疑惑吧。 其实有两种方式可以实现AdapterView 的item onclick监听。 一种是setOnItemClickLi

破磬 1435

android 多个按钮响应,处理Android Recyclerview中的多个按钮单击并将响应存储在Array或ArrayList中...

我正在设计在线测验App。我设计了PlayQuiz.java文件如下:public class PlayQuiz extends AppCompatActivity {private RecyclerView recyclerView;DataBaseHelper database;private List quizList;private QuizAdapter adapter;@Overrid...

weixin_30380991的博客 338

解决RecyclerView无法onItemClick问题

对于RecyclerView的使用,大家可以查看将替代ListView的RecyclerView 的使用(一),单单从代码结构来说RecyclerView确实比ListView优化了很多,也简化了我们编写代码量,但是有一个问题会导致开发者不会去用它,更比说替换ListView了,我不知道使用过RecyclerView的人有没有进一步查看,RecyclerView没有提供Item的点击事件,我们

jwzhangjie的专栏 5万+

Android ListView item 选中高亮显示

很多时候我们在使用ListView的时候,当用户点击某一个Item之后,需要让它的背景色和字体颜色都发生改变以示区别,本例实现了这个功能。 思路:在Adapter类中保存一个变量,记录当前用户选择的item的位置,并在getView 中进行判断, 在ListView的item点击事件 onItemClick 方法中更新UI,并记录点击item的位置。 实现的效果如下:

Ricky 3803

对于列表recyclrview中item的高亮处理

原则1:学习Android中的封装性。原则2:代码保持高内聚低耦合。原则3:不断完善自身代码。

qq_51108920的博客 1498

Android ListView 设置选中item高亮状态

以前没有怎么在意listview设置选中状态这个问题.但是真当想用的时候,实实在在的发现了一些问题 本来以为只要简单的写个颜色 selector就可以达到目的.后来发现的确是错了 先说下我走过的弯路,本来以为listview的setSelection方法就能把该item设置为选中的高亮状态.没想到这个方法 仅仅只是把该项滑动到屏幕的最顶端而已 先把颜色 selector 以及布局贴一下

我用双手成就你的梦想,所以我必须努力 1万+

Android 开发ListView单选多选高亮,以及点击项高亮

1.在listView添加点击事件的监听器

m0_60352504的博客 968

RecyclerView系列之三:处理item的点击事件

我用的方法二 在RecyclerView中,并没有直接提供类似setOnItemClickListener( )和setOnItemLongClickListener ( )的方法,但是我们可以自己去添加 一、方式1:条目的布局文件中添加onClick属性来实现 1、布局文件 (1)、MainActivity 布局文件 <?xml version="1.0" encoding="...

lwh156541064的博客 1417
上一篇: Dialog的淡进效果
下一篇: android机顶盒 EPG View实现方法
wujiang_android
博客等级 码龄9年 11粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值