Android listview子控件的的点击事件

Android中ListView实现子控件点击事件后ListView点击事件失效解决办法 Android中ListView实现子控件点击事件后ListView点击事件失效解决办法,详细说明见相关博客: 博文地址:http://blog.youkuaiyun.com/leijf1239848066/article/details/9526483 立即下载
1.先看图,是否是你想要的

                                       


2.布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lin_img"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:descendantFocusability="blocksDescendants"----------------//加上这行
    >
  
    <ListView
    android:id="@+id/hot_listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:cacheColorHint="#00000000"
    android:listSelector="#00000000"
    ></ListView>

</LinearLayout>

  descendantFocusability属性的值有三种:

beforeDescendants:viewgroup会优先其子类控件而获取到焦点

      afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

      blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

子控件设置:android:focusable="false"



3.adapter类

public class Videoadapter extends BaseAdapter{
ArrayList<VideoInfoModel.DetailBean.VideosBean> mList;
Context context; ViewHolder viewHolder=null;

/** 监听对象 */

private MyClickListener mListener;
public
Videoadapter(ArrayList<VideoInfoModel.DetailBean.VideosBean> list,Context context){
this.mList=list;
this
.context=context;
}

public void setOnClickListener(MyClickListener listener) {

mListener = listener;

}


@Override
public int getCount() {
return mList==null?0:mList.size();

}
 
@Override

public Object getItem(int position) {
return mList==null?0:mList.get(position);
}

@Override
public long getItemId(int position) {
return mList==null?0:position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
viewHolder=new ViewHolder();
//得到布局
convertView= LayoutInflater.from(context).inflate(R.layout.content_list,null);
//得到控件
viewHolder.img_head= (ImageView) convertView.findViewById(R.id.userhead);
viewHolder.img_video= (ImageView) convertView.findViewById(R.id.img_video);
viewHolder.img_like= (ImageView) convertView.findViewById(R.id.img_like);
viewHolder.txt_uname= (TextView) convertView.findViewById(R.id.username);
viewHolder.img_addreess= (ImageView) convertView.findViewById(R.id.address);
viewHolder.txt_like= (TextView) convertView.findViewById(R.id.txt_like);
viewHolder.txt_address= (TextView) convertView.findViewById(R.id.txt_address);
viewHolder.img_comment= (ImageView) convertView.findViewById(R.id.img_comment);
viewHolder.txt_comment= (TextView) convertView.findViewById(R.id.txt_comment);
viewHolder.btn_attention= (Button) convertView.findViewById(R.id.attention);


//设置头像的监听事件
viewHolder.img_head.setOnClickListener(mOnClickListener);

//设置播放视屏的监听事件
viewHolder.img_video.setOnClickListener(mOnClickListener);

//设置图片点赞的监听事件
viewHolder.img_like.setOnClickListener(mOnClickListener);

//设置text的监听事件
viewHolder.txt_like.setOnClickListener(mOnClickListener);

//设置点击评论图片的监听事件
viewHolder.img_comment.setOnClickListener(mOnClickListener);

//设置点击评论文字的监听事件
viewHolder.txt_comment.setOnClickListener(mOnClickListener);

convertView.setTag(viewHolder);

}else{
viewHolder= (ViewHolder) convertView.getTag();
}


//设置postition

viewHolder.img_head.setTag(position);
viewHolder.img_video.setTag(position);
viewHolder.img_like.setTag(position);
viewHolder.txt_like.setTag(position);
viewHolder.img_comment.setTag(position);
viewHolder.txt_comment.setTag(position);


//设置值

viewHolder.img_head.setImageResource(R.mipmap.head);


        ---------------------------初始化ImageLoader--------------------------------

//显示图片的配置(使用ImagerLoader必须先初始化,最好放在Application里面,避免代码冗余)
       // 创建默认的ImageLoader配置参数
        ImageLoaderConfiguration configuration = ImageLoaderConfiguration
        .createDefault(this);

        ImageLoader.getInstance().init(configuration);

        ---------------------------初始化ImageLoader--------------------------------



//加载网络图片
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true).cacheOnDisk(true)
.bitmapConfig(Bitmap.Config.RGB_565).build();

ImageLoader.getInstance().displayImage(mList.get(position).getImgUrl(), viewHolder.img_video, options);


 
viewHolder.txt_uname.setText(mList.get(position).getUserID());
viewHolder.img_addreess.setImageResource(R.mipmap.china);
viewHolder.txt_like.setText(mList.get(position).getLikes() + "");
viewHolder.img_comment.setImageResource(R.mipmap.comment);
viewHolder.txt_comment.setText(R.string.comment);
viewHolder
.txt_address.setText(R.string.address);

return convertView;

}


class ViewHolder{
private ImageView img_head,img_video,img_like,img_comment,img_addreess;
private
TextView txt_uname,txt_like,txt_comment,txt_address;
private
Button btn_attention;
}


   //实现点击事件
private View.OnClickListener mOnClickListener=new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
int position = (Integer) v.getTag();
switch
(v.getId()) {
case
R.id.img_video:
mListener.onPlayVideo(Videoadapter.this,v,position);
break;

case
R.id.img_like:
mListener.onSetLike(Videoadapter.this, v, position);
break;
case
R.id.txt_like:
                       mListener.onSetLike(Videoadapter.this, v, position);                       
                       break;
                case  R.id.txt_like:
                       mListener.onQueryLikeInfo(Videoadapter.this, v, position);
                       break;
                case R.id.img_comment:
                       mListener.onQueryCommentorAddComment(Videoadapter.this, v, position);
                       break;
                case R.id.txt_comment:
                       mListener.onQueryCommentorAddComment(Videoadapter.this,v,position);
                       break;
}
}
}
};


//自定义接口类,方便Activity调用
public  interface  MyClickListener {
    public void  onPlayVideo(BaseAdapter adapter, View view, int position);
    public void  onSetLike(BaseAdapter adapter, View view, int position,Boolean islike);
    public void  onQueryLikeInfo(BaseAdapter adapter, View view, int position);
    public void  onQueryCommentorAddComment(BaseAdapter adapter, View view, int position);

}


4.activity类
public class DiscoverActivity extends Activity {

ArrayList<VideoInfoModel.DetailBean.VideosBean> mList;
Videoadapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.discover_activity);
        initView();
    }

   public void initView(){
       videolist = new ArrayList<VideoInfoModel.DetailBean.VideosBean>();
       adapter = new Videoadapter(videolist, getActivity());
       hotListview.setAdapter(adapter);
}

//实现adapter中的接口调用
  adapter.setOnClickListener(new Videoadapter.OnClickListener() {
            @Override
            public void onPlayVideo(BaseAdapter adapter, View view, int position) {
             
            }

            @Override
            public void onSetLike(BaseAdapter adapter, View view, int position) {
               

            }

            @Override
            public void onQueryLikeInfo(BaseAdapter adapter, View view, int position) {

            }


            @Override
            public void onQueryCommentorAddComment(BaseAdapter adapter, View view, int position) {
  
            }
        });

}

到此这篇文章就结束了,希望能帮助各位,每天在工作中学习,在学习中进步,在进步中完成工作,每天迈出一小步,
一年跨出一大步。


从零构建:ESP32S3无线DAP-Link调试器的硬件与软件协同设计 本文详细介绍了基于ESP32S3的无线DAP-Link调试器的硬件与软件协同设计,涵盖关键元器件选型、无线通信协议优化、双核任务处理及低功耗调试方案。通过ESP-NOW协议实现低延迟无线调试,结合USB协议栈与双核协同,为嵌入式开发提供高效灵活的调试解决方案。 阅读详情

相关推荐

SECS/GEM EAP 设备自动化功能原理和设计方案

半导体SECS GEMEAP实现了对生产线上机台的实时监控,是工厂自动化不可缺少的控制系统。EAP系统与FAB中的机台紧密相关,系统的设计与开发必须与生产线的机台实际生产流程相一致,才能达到控制机台生产的目的。 EAP SECS/GEM是MES与设备的桥梁,EAP通过SECS国际标准协议与机台进行数据传输。SECS是半导体设备(半导体行业称设备为机台)必须遵循的一种国际通信协议。EAP就是通过SECS与设备通信、传输数据、发送指令控制设备按照预先定义........

semisecs 17万+

ListView的点击/长按事件及item内控件的点击/长按事件

listview的点击/长按事件很简单,和普通控件的点击/长按事件是一样的,不同的是由于它是列表,事件里面会加上item,指的是listview里面每个item的点击/长按事件 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> paren

lanrenxiaowen的博客 1912

基于单片机控制双向可控硅灯光强度设计

*单片机设计介绍,基于单片机控制双向可控硅灯光强度设计。

QQ2193276455的博客 2457

simpleAdapter中的listview子项按钮点击事件实现

1.不推荐,这种可以控制item项的点击事件,缺点是必须点击item项后才能点击内部按钮 // 内部控件点击事件 // AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { // @Override // ...

李胜坤的博客 1715

Cadence PCB仿真使用Allegro PCB SI S参数配置方法图文教程

S参数即S-Parameter是指散射参数,描述信号在传输线中的正反向传输和正反向反射的情况。本文讲述在使用Allegro PCB SI进行信号完整性仿真前,S参数的配置方法。

fydar的博客 2177

[QMT和ptrade量化交易小白入门]-112、小市值热点概念交易策略,回测5年20倍

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1079

ListView中每个item条目上控件的点击事件

本人遇到在ListView中每个item的控件设置监听事件时,没有想到怎么解决,百度上找的也都达不到效果,后来经过自己试了多次终于出来了,直接在adapter中的控件上设置点击事件就可以了,不过要是需要跳转页面的话,需要用上下文对象去得到方法,具体如图,其他的大同小异

Fast_Soo_So的博客 3484

【深度学习新浪潮】智能体在图像处理领域的技术突破与实践指南

智能体正在重构图像处理的技术版图:从多智能体分工的"专业化协作",到多模态统一的"极简架构",再到工具增强的"实战能力",技术突破不断降低开发门槛并拓展应用边界。对于开发者而言,2025年的核心机遇在于结合具体场景选择成熟框架(如医疗用IteR-MRL、工业用NVIDIA NIM),通过微调与工具集成快速落地解决方案。随着硬件成本下降与开源生态完善,图像处理智能体将从当前的"高端场景赋能"走向"千行百业普及",真正成为数字世界的"视觉感知与操作核心"。

专注:太空算力、AI infra、异构调度、大模型成本工程 439

Android列表组件ListView子项的点击事件与子项中组件的点击事件

点击ListView子项时进行相关的逻辑操作,为ListView组件添加子项点击事件: //设置ListView子项的点击事件 testLv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClic...

一个IT人的技术成长历程。 4649

手把手教你学Simulink--电机控制架构与算法实现​场景示例:基于Simulink的电机速度环PID调节仿真

本文带你完成了电机速度环PID参数的科学整定,实现了:✅ 理解了速度环的级联系统特性与关键参数影响工程整定法(理论初值)系统辨识法(参数未知时)✅ PID Tuner自动调参(推荐!自动调参兼具快速性与鲁棒性✅ 学会了前馈补偿抗饱和等工程实用技巧。

MHD0815的博客 653

STM32 MCU解除读保护的方法及STM32CubeProgrammer的应用

下面是一个简单的源代码示例,演示如何在STM32CubeProgrammer中使用命令行界面(Command-Line Interface,CLI)来解除STM32 MCU的读保护。通过按照这些步骤操作,您可以成功解除STM32 MCU的读保护,并在需要的时候进行调试、烧录或修改固件。模块调用了STM32CubeProgrammer的命令行界面(CLI),并传递了相应的参数来解除STM32 MCU的读保护。请注意,在进行任何与读保护相关的操作之前,请确保您拥有合法的授权和权利,以避免潜在的安全风险。

ZwcCsharp的博客 3548

android捕获ListView中每个item点击事件

package com.wps.android; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView

xyjikl 698

【原理图PCB专题】Cadence 17.4版本导出excel版本坐标文件

Cadence 17.4版本导出坐标文件往往都是txt格式,并且无标题、导出时间、导出设计工程多名称等信息。那么怎么样才能导出有带这些信息的excel版本并格式好看的坐标文件呢?

一点硬件 2763

Android ListView子控件的点击事件

已经有段时间没有写博客记录一些知识点,有些东西写着写着就忘了,记录一下 这个问题理解了之后也不难,我刚学习Android 的时候碰到子控件的点击事件难受得要死,哈哈哈哈哈。现在依旧还是个菜鸟。 1.以下是适配器 public class MyPinlunAdapter extends BaseAdapter { private Context context; private L...

NJQ_优快云的博客 814

老版QQ原生表情gif动态

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

点击fragment会响应父控件_Android ListView 子控件点击事件

android:descendantFocusability beforeDescendants:viewgroup会优先其子类控件而获取到焦点 afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点 blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点…1.先看图,是否是你想要的 2.布局文件Android实现监听控件点击事件...

weixin_32688155的博客 594

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android listview 复用 点击事件,Android ListView 子控件onClick正确获取position的方法

在实际开发中,我们有时候不仅需要响应ListView的onItemClick,还需要响应其子控件的点击事件,这个时候我们就会发现,由于复用等原因,如果直接在子控件的onClick事件中调用getView()中的position,会出现数据或显示错位的问题,原因就是position的值出现了重复或不准确,解决这个问题的方法是,在adapter每次加载数据的时候,为需要点击的控件设置一个tag值,这个...

weixin_39980841的博客 397

假人有限元模型

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

android listview 中的子控件(比如ImageView)设置点击事件

这里要实现为android中listview 的项中子控件(比如ImageView)设置点击事件: 直接在listview的适配器中注册点击代码即可,参阅:http://blog.youkuaiyun.com/xxxsz/article/details/7582603

wangxiaosu的专栏 4992

Android:ListView的点击事件与子控件点击冲突的解决

当listview中的itemview中含有button、CheckBox等这样的控件时,如果不进行任何设置,条目的点击事件会被itemView中的类似button这种控件所拦截,因此无法点击。 解决方案:给itemview中类似button按钮的控件设置:focusable="false" 给listview设置android:descendantFocusability= “blo

分享人生 3087

Android listview子控件的的点击事件(转)

1.先看图,是否是你想要的 2.布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lin_img" android:layout_width="ma...

weixin_30399797的博客 162

Android中解决listview的item点击事件和子控件点击事件的冲突

如果listview列表中有一个按钮或者子布局中有按钮,那么点击子item时,列表的点击事件将不会被触发,因为点击事件被Button点击事件屏蔽了,因此无法点击。 解决: 在ItemLayout的根部局加上属性android:descendantFocusability= “blocksDescendants” 在需要点击的控件上如Button加上属性 android:focusable=”f

Mr_GLY_di的博客 1307

Android--焦点问题-ListView中item及其子控件无法响应点击事件

ListView中item及其子控件无法响应点击事件原因 存在Button、ImageButton、CheckBox(一般是是Button或者CheckBox及其子类控件)等获取焦点能力比较强的控件把item的焦点给霸占了,导致item无法获取焦点来动态分配给其他控件,从而无法触发点击事件; 最直接的解决方法 在item的xml布局文件中的根节点上设置 descendantFocusa

Rose 3897

ListView中Item与Item的子控件点击事件冲突问题解决

1、问题 在Android开发时,ListView中点击一个Item,会一并触发其子控件的点击事件。比如Item中的Button、ImageButton等。导致了点击Item被子控件拦截。 这时候就可以使用descendantFocusability来解决啦,API描述如下: android:descendantFocusability 该属性是当一个为view获取焦点时,定义viewGro...

TGWhuli的博客 735

llvm-project完全指南:从仓库结构到Pass编写与源码贡献

编译器是现代软件工程的基础设施,而LLVM作为一套模块化的编译器框架,通过前端生成中间表示(IR),中端执行优化,后端生成机器码,实现了语言与硬件的解耦。理解IR与Pass机制是掌握编译优化的关键,开发者可以借助opt工具加载自定义Pass来分析或变换代码。llvm-project仓库将所有核心子项目统一管理,包括Clang、LLD、MLIR等,使用CMake与Ninja可高效完成本地构建。掌握其构建流程、调试工具与测试方法,不仅有助于日常开发,还能为参与开源社区贡献代码打下基础。本文从仓库组成、构建实操、

weixin_33904756的博客 418

android item 点击 获取position,Android ListView 子控件onClick正确获取position的方法

在实际开发中,我们有时候不仅需要响应ListView的onItemClick,还需要响应其子控件的点击事件,这个时候我们就会发现,由于复用等原因,如果直接在子控件的onClick事件中调用getView()中的position,会出现数据或显示错位的问题,原因就是position的值出现了重复或不准确,解决这个问题的方法是,在adapter每次加载数据的时候,为需要点击的控件设置一个tag值,这个...

weixin_31327207的博客 1192

android listview子控件点击事件(点赞,收藏功能)

转载:http://blog.youkuaiyun.com/u013000152/article/details/50802724 写的很好,正好用上,希望 能帮到需要的人 《最近做一个小功能遇到这么一个问题,listview 与 baseadapter结合使用,关于点赞的的时候 图片重复问题,比如:我在第1个item 点赞然后 心型换成了红色,但是以后每隔几个item就会出现一个红色的心,响

Struggle 7517
上一篇: Android studio 如何修改工程的包名
下一篇: Android Studio打包签名出现错误
富贵编程之路
博客等级 码龄11年 19粉丝 11原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值