android studio listview点击事件,android如何响应listview上不同按钮点击事件
参考来源: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上不同按钮点击事件相关推荐
- 【Android 插件化】Hook 插件化框架 ( Hook 实现思路 | Hook 按钮点击事件 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 第52篇 Android Studio实现生命数字游戏(七)ListView与适配器
第52篇 Android Studio实现生命数字游戏(七)ListView与适配器 1.ListView 1.1.适配界面 1.2.适配器 1.ListView 在布局中直接添加. 没有什么好说明, ...
- android studio控件使用方法,android studio使用教程
android studio使用教程 Android Studio是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studi ...
- 1.Android简介,Android Studio安装,创建运行Android程序
文章目录 1.了解通信技术 2.Android简介 2.1 Android起源 2.2 Android历史版本 3.Android Studio开发环境的搭建 3.1 Android Stud ...
- 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android
背景 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android 应用程序? 运行调式一个Android项目,写下必要的代码后,接下来的任务是在模拟器或手机上运 ...
- Android studio通过荣耀20调试Android程序
Android studio通过荣耀20调试Android程序 通过Android studio通过荣耀20调试Android程序,要考虑三方面的因素: ·····手机····· ·····windo ...
- Android Studio 3.6 稳定版发布,你用上了吗?
作者 / Scott Swarthout, Product Manager 我们很高兴为大家带来 Android Studio 3.6 的稳定版本,该版本提供的功能与特性旨在提升代码编辑和调试场景中的 ...
- Android Studio安装常见问题详解——Android Emulator Hypervisor Driver for AMD Processors installation failed.
目录 一.问题描述 二.解决方案 2.1 开启CPU虚拟化 2.2 禁用Hyper-V 2.3 使用管理员命令行在驱动程序包中执行"silent_install.bat" 一.问题 ...
- 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. ...
- android studio 看不到 manifest,Android Studio: Android Manifest doesn't exist
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I got this error on Android Studio (AS): How I ...
最新文章
- 重磅直播|SLAM/sfm中的两视图三角化方法
- NPM:Cannot read property 'pause' of undefined
- Android VNC Server
- dataoutputstream.write 有时无法发送_RTK实操——CORS官方网教您如何解决RTK无法固定的问题...
- IFIX和Historian历史数据曲线图
- 交换机知识--生成树协议
- 【Playable API】不用Animator如何播放动画?
- linux6.4添加源,RHEL6.4更改为CentOS源
- win7系统下,磁盘之间合并
- 2021-09-07218. 天际线问题
- python上的表白代码_用Python实现表白代码
- 那些非常好用的电脑软件
- 万年历c语言代码单链表,万年历的C语言实现
- 《影响力》 让人顺从的六大原理 [美] Robert B. Cialdini
- 每天学命令get_property
- java防止重复提交
- ios射击类游戏简单代码射击
- JS日期格式转换时间戳,时间戳转换日期,获取当前天23:59:59,时间戳判断是否是今天
- 读格林斯潘回忆录-12
- Excel学习——countif函数
热门文章
- 编解码版税royalty和授权费license fee
- 关于IOS的学习(wxhl)曾海明
- 心理学c语言,心理学史练习题.doc
- PTA 一维数组 7-3 删除指定数据
- 韦东山嵌入式第一期学习笔记DAY_1——3_1_linux命令入门演示
- (基于matlab自写代码)语音信号的线性预测
- 陀螺仪重力感应(the gyroscope gravity induction)and (core Motion Framework)
- 如何高效阅读英文文献,这些技巧你学会了吗?
- python 字符种类判断:
- Freeswitch的mod_av模块优化