参考来源:http://www.tuicool.com/articles/bamqiq

大致思路:重写适配器,让主函数继承接口接口 ListItemClickHelp,这个接口中包含onclick方法,在主函数中实现其onclick方法后,就可以完成不同按钮的点击。参考博客中中定义了每一项的setonitemclicklistener,在跑源码的时候发现这时候点击每一项是没有什么效果的。所以换成了点击两个button来实现不同的点击事件. 1,重写适配器

package com.example.yx.pumkin;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;

import java.util.ArrayList;

import java.util.HashMap;

/**

* Created by hp on 2016/2/20.

*/

public class ListItemClickAdapter extends BaseAdapter {

private Context contxet;

private ArrayList list;

public ListItemClickHelp callback;

private LayoutInflater mInflater;

public ListItemClickAdapter(Context contxet, ArrayList list,

ListItemClickHelp callback) {

this.contxet = contxet;

this.list = list;

this.callback = callback;

}

@Override

public int getCount() {

return list.size();

}

@Override

public Object getItem(int position) {

return null;

}

@Override

public long getItemId(int position) {

return 0;

}

@Override

public View getView(int position, View convertView, final ViewGroup parent) {

mInflater = (LayoutInflater) contxet

.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

ViewHolder holder;

if (convertView == null) {

convertView = mInflater.inflate(

R.layout.list_adapter2, null);

holder = new ViewHolder();

holder.mAd_tv_show = (TextView) convertView

.findViewById(R.id.textView3);

holder.mAd_btn_one = (ImageView) convertView

.findViewById(R.id.complete_view);

holder.mAd_btn_two= (ImageView) convertView

.findViewById(R.id.read_view);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

holder.mAd_tv_show.setText(list.get(position));

final View view = convertView;

final int p = position;

final int one = holder.mAd_btn_one.getId();

holder.mAd_btn_one.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

callback.onClick(view, parent, p, one);

}

});

final int two = holder.mAd_btn_two.getId();

holder.mAd_btn_two.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

callback.onClick(view, parent, p, two);

}

});

return convertView;

}

public static class ViewHolder {

TextView mAd_tv_show;

ImageView mAd_btn_one;

ImageView mAd_btn_two;

}

}

2,接口 ListItemClickHelp

//这是个很神奇的接口,参数position 就是listview里面对应每一项的position.  //至今不明白为什么??

package com.example.yx.pumkin;

import android.view.View;

/**

* Created by hp on 2016/2/20.

*/

public interface ListItemClickHelp {

void onClick(View item, View widget, int position, int which);

} 主函数继承这个接口后重写onclick方法,就能相应不同按钮的点击事件了

3,适配器布局

xmlns:tools="http://schemas.android.com/tools"

xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@color/white"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context=".MainActivity">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="New Text"

android:textSize="20dp"

android:id="@+id/textView3"

android:layout_marginTop="67dp"

android:layout_alignParentTop="true"

android:layout_toRightOf="@+id/complete_view"

android:layout_toEndOf="@+id/complete_view"

android:layout_marginLeft="88dp"

android:layout_marginStart="88dp" />

android:layout_width="40dp"

android:layout_height="40dp"

android:id="@+id/complete_view"

android:background="@drawable/quan1"

android:layout_alignTop="@+id/textView3"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

android:layout_width="30dp"

android:layout_height="30dp"

android:id="@+id/read_view"

android:background="@color/red"

android:layout_alignTop="@+id/textView3"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true" />

4,主函数

//列表显示

listString=getTaskList();

madapter = new ListItemClickAdapter(MainActivity.this,listString,(ListItemClickHelp) this);

lv1.setAdapter(madapter);

//响应不同listItem上面不同按钮的完成、查看

@Override

public void onClick(View item, View widget, int position, int which) {

switch (which) {

case R.id.complete_view:

Toast.makeText(MainActivity.this,"完成了",Toast.LENGTH_LONG).show();

break;

case R.id.read_view:

listItem=getALLlist();

HashMap one = listItem.get(position);

Intent intent = new Intent(MainActivity.this, task_read.class);

Bundle data = new Bundle();

data.putInt("_id", Integer.parseInt(String.valueOf(one.get("_id"))));

data.putString("task", String.valueOf(one.get("task")));

data.putString("date", String.valueOf(one.get("date")));

data.putString("task_type", String.valueOf(one.get("task_type")));

intent.putExtras(data);

startActivityForResult(intent, position); //标识修改项的位置

finish();

break;

default:

break;

}

}

android studio listview点击事件,android如何响应listview上不同按钮点击事件相关推荐

  1. 【Android 插件化】Hook 插件化框架 ( Hook 实现思路 | Hook 按钮点击事件 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  2. 第52篇 Android Studio实现生命数字游戏(七)ListView与适配器

    第52篇 Android Studio实现生命数字游戏(七)ListView与适配器 1.ListView 1.1.适配界面 1.2.适配器 1.ListView 在布局中直接添加. 没有什么好说明, ...

  3. android studio控件使用方法,android studio使用教程

    android studio使用教程 Android Studio是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studi ...

  4. 1.Android简介,Android Studio安装,创建运行Android程序

    文章目录 1.了解通信技术 2.Android简介   2.1 Android起源   2.2 Android历史版本 3.Android Studio开发环境的搭建 3.1 Android Stud ...

  5. 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android

    背景 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android 应用程序? 运行调式一个Android项目,写下必要的代码后,接下来的任务是在模拟器或手机上运 ...

  6. Android studio通过荣耀20调试Android程序

    Android studio通过荣耀20调试Android程序 通过Android studio通过荣耀20调试Android程序,要考虑三方面的因素: ·····手机····· ·····windo ...

  7. Android Studio 3.6 稳定版发布,你用上了吗?

    作者 / Scott Swarthout, Product Manager 我们很高兴为大家带来 Android Studio 3.6 的稳定版本,该版本提供的功能与特性旨在提升代码编辑和调试场景中的 ...

  8. Android Studio安装常见问题详解——Android Emulator Hypervisor Driver for AMD Processors installation failed.

    目录 一.问题描述 二.解决方案 2.1 开启CPU虚拟化 2.2 禁用Hyper-V 2.3 使用管理员命令行在驱动程序包中执行"silent_install.bat" 一.问题 ...

  9. android apt最新版本,解决Android studio 2.3升级到Android studio 3.0 后apt报错问题

    解决Android studio 2.3升级到Android studio 3.0 后apt报错问题 发布时间:2020-09-16 19:59:42 来源:脚本之家 阅读:62 作者:哈特中尉 1. ...

  10. android studio 看不到 manifest,Android Studio: Android Manifest doesn't exist

    可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I got this error on Android Studio (AS): How I ...

最新文章

  1. 重磅直播|SLAM/sfm中的两视图三角化方法
  2. NPM:Cannot read property 'pause' of undefined
  3. Android VNC Server
  4. dataoutputstream.write 有时无法发送_RTK实操——CORS官方网教您如何解决RTK无法固定的问题...
  5. IFIX和Historian历史数据曲线图
  6. 交换机知识--生成树协议
  7. 【Playable API】不用Animator如何播放动画?
  8. linux6.4添加源,RHEL6.4更改为CentOS源
  9. win7系统下,磁盘之间合并
  10. 2021-09-07218. 天际线问题
  11. python上的表白代码_用Python实现表白代码
  12. 那些非常好用的电脑软件
  13. 万年历c语言代码单链表,万年历的C语言实现
  14. 《影响力》 让人顺从的六大原理 [美] Robert B. Cialdini
  15. 每天学命令get_property
  16. java防止重复提交
  17. ios射击类游戏简单代码射击
  18. JS日期格式转换时间戳,时间戳转换日期,获取当前天23:59:59,时间戳判断是否是今天
  19. 读格林斯潘回忆录-12
  20. Excel学习——countif函数

热门文章

  1. 编解码版税royalty和授权费license fee
  2. 关于IOS的学习(wxhl)曾海明
  3. 心理学c语言,心理学史练习题.doc
  4. PTA 一维数组 7-3 删除指定数据
  5. 韦东山嵌入式第一期学习笔记DAY_1——3_1_linux命令入门演示
  6. (基于matlab自写代码)语音信号的线性预测
  7. 陀螺仪重力感应(the gyroscope gravity induction)and (core Motion Framework)
  8. 如何高效阅读英文文献,这些技巧你学会了吗?
  9. python 字符种类判断:
  10. Freeswitch的mod_av模块优化