ListView item 中TextView 如何获取长按事件
昨天晚上小伙伴突然来信, ListView item中嵌套的TextView 无法获取长按事件
从前从来没有仔细留意过, coding后发现...果然没什么动静
而且没有合适的API让我调用获取TextView 的 setOnLongClickListener 事件
思考ing
ListView几大要素
xml: item模板 --- 这个不可能绑定事件
java: ListView本身 --- 有可能, 但是本身没有提供API
adapter: 直接使用现成的 SimpleAdapter --- 无法做到, 以前做过重写Adapter的事好像...
有个 getView 方法是必须重写的, 然后里面貌似可以操作单个控件 .... 恩 有可能,动手试试
定义MyAdapter类:
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView; import java.util.List;
import java.util.Map; /**
* Created by root on 15-11-6.
*/
public class MyAdapter extends BaseAdapter {
LayoutInflater mLayoutInflater;
List<Map<String, Object>> mData;
public static final String KEY_NAME = "name"; // Context context, MyAdapter
public MyAdapter(Context context, List<Map<String, Object>> data) {
mLayoutInflater = LayoutInflater.from(context);
mData = data;
} @Override
public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.listview_item_text, null);
TextView tv = (TextView) convertView.findViewById(R.id.text1);
tv.setText(mData.get(position).get(KEY_NAME).toString());
tv.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Log.d("carlozlog", "TextView be long click");
return true;
}
}); } return convertView;
} @Override
public int getCount() {
return mData.size();
} @Override
public Object getItem(int position) {
return null;
} @Override
public long getItemId(int position) {
return 0;
}
}
此处用到一个ListViiew的 item 模板
listview_item_text.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text1"
android:layout_width="fill_parent"
android:textColor="#000000"
android:layout_height="50dp" />
使用adaper: MainActivity.java 中
public class MainActivity extends AppCompatActivity {
// view
private ListView listView1;
// data
Context mContext;
//SimpleAdapter mSimpleAdapter;
MyAdapter mMyAdapter;
String tag = "carlozlog";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = getApplicationContext();
Map<String, Object> map1 = new HashMap<>();
map1.put(MyAdapter.KEY_NAME, "Hello World");
Map<String, Object> map2 = new HashMap<>();
map2.put(MyAdapter.KEY_NAME, "Lu Xun");
Map<String, Object> map3 = new HashMap<>();
map3.put(MyAdapter.KEY_NAME, "Zhu De");
Map<String, Object> map4 = new HashMap<>();
map4.put(MyAdapter.KEY_NAME, "Lao Mao");
List<Map<String, Object>> listData = new ArrayList<>();
listData.add(map1);
listData.add(map2);
listData.add(map3);
listData.add(map4);
//mSimpleAdapter = new SimpleAdapter(mContext, listData, R.layout.listview_item_text, new String[]{"name"}, new int[]{R.id.text1});
mMyAdapter = new MyAdapter(mContext, listData);
listView1 = (ListView)findViewById(R.id.listview1);
listView1.setAdapter(mMyAdapter);
listView1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(tag, "listview item " + view.getId() + " has been long clicked");
return false;
}
});
}
}
如此就成了, 看log, 搜关键字 carlozlog
11-06 06:56:58.204 12719-12719/? D/carlozlog﹕ TextView be long click
11-06 06:56:59.869 12719-12719/? D/carlozlog﹕ TextView be long click
11-06 06:57:02.115 12719-12719/? D/carlozlog﹕ TextView be long click
11-06 06:57:04.845 12719-12719/? D/carlozlog﹕ TextView be long click
11-06 06:57:06.596 12719-12719/? D/carlozlog﹕ TextView be long click
11-06 06:57:08.755 12719-12719/? D/carlozlog﹕ TextView be long click
11-06 06:57:10.189 12719-12719/? D/carlozlog﹕ TextView be long click
ListView item 中TextView 如何获取长按事件的更多相关文章
- listview 的onitemlongclick阿和onitemclick冲突,item中还有button的点击事件
listview里面item有button的,button要设置 android:focusable="false" ,listview里面如果设置了 onitemlongcli ...
- Android中TextView内容过长加省略号
textview中有个内容过长加省略号的属性,即ellipsize,用法如下: 在xml中 Android:ellipsize = "end" 省略号在结尾 and ...
- ListView优化中ViewHolder要不要定义为static静态内部类?
给学生讲课的时候,发现存在这个问题,下来百度了下,发现很纠结,涉及到了内部类对外部类的引用,静态类的生命周期等java知识,现总结如下: static class ViewHolder { //定义l ...
- VUE长按事件
PS:在开发中常常会有长按事件的需求,这里我简单的介绍几种长按事件的需求 需求一:长按数字累加或者累减 HTML: <div class="mui-numbox" data- ...
- Android自定义长按事件
Android系统自带了长按事件,setOnLongClickListener即可监听.但是有时候,你不希望用系统的长按事件,比如当希望长按的时间更长一点的时候.这时候就需要自己来定义这个长按事件了. ...
- Android ListView 之 SimpleAdapter 二 (包含 item 中按钮监听)
1 MainActivity.java package com.myadapter; import java.util.ArrayList; import java.util.HashMap; ...
- ListView中的item中的Onclick事件的优化
ListView的Adapter的优化布局载入器的载入次数最典型的使用方法是使用convertView进行优化,让convertView当做布局载入器的载体,也就是.重用 convertView 用以 ...
- 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
今天发现一个问题.listView的item点击以后进入到下一个页面,下个页面有个返回按钮,直接返回回去以后点击事件不能触发,滑动或者重新打开这个listView,就可以达到原来的效果.后来发现是因为 ...
- listview当选中某一个item时设置背景色其他的不变
listview当选中某一个item时设置背景色其他的不变: 可以使用listview.setOnFoucsChangeListener(listener) ; /** * listview获得焦点和 ...
随机推荐
- poj 3608 Bridge Across Islands
题目:计算两个不相交凸多边形间的最小距离. 分析:计算几何.凸包.旋转卡壳.分别求出凸包,利用旋转卡壳求出对踵点对,枚举距离即可. 注意:1.利用向量法判断旋转,而不是计算角度:避免精度问题和TLE. ...
- 04、生成 HTMLTestRunner 测试报告
1.HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展.它生成易于使用的 HTML 测试报告 1>下载HTMLTestRunner.py文件,地址为: h ...
- MySQL自定义查询字段排序
同事在做抽奖排名的时候有个问题 需要按照 一等奖 二等奖 三等奖 未中奖 的形式输出数据 问到我如何排序. 数据库设计如下 用一个prize_code字段标示了是否中奖 1是一等奖 2是二等奖 3是三 ...
- tcpreplay安装使用经验
tcpreplay安装使用经验 #Author: ypguo#Data: 2010.4.23#Version: 1.2 增加了修改VLAN tag内容. 1.1 ...
- raft 分布式协议 -- mongodb
http://www.mongoing.com/presentations/webinar-raft-consensus-in-mongodb#rd
- android开发之gridlayout使用入门
这个东东以前没怎么用过,今天研究了一下,不难,感觉只是在某些方面很好用. 记录下,做个计算器. <GridLayout xmlns:android="http://schemas.an ...
- gson使用详解
昨天读一篇文章,看到gson这个词,一开始还以为作者写错了,问了度娘之后才发现是我才疏学浅,于是大概了解了一下gson用法,总体来说还是很简单的. Gson.jar下载 JavaBean转json / ...
- JavaScript 开发规范要求详解
作为一名开发人员(We前端JavaScript开发),不规范的开发不仅使日后代码维护变的困难,同时也不利于团队的合作,通常还会带来代码安全以及执行效率上的问题.本人在开发工作中就曾与不按规范来开发的同 ...
- 关于css的兼容
这篇随笔为了方便自己后期的学习和查找,用来记录平时遇到的一些问题,后期会陆续更新 1.背景图 :background-position属性,在ff下不支持该属性的拆分写法(background-pos ...
- 【锋利的jQuery】学习笔记03
第三章 jQuery中的DOM操作 一.DOM操作的分类 DOM(document object model)是一种与浏览器.平台.语言无关的接口,使用该接口可以访问页面中的·所有组件.DOM的操作可 ...