博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListView item 中TextView 如何获取长按事件
阅读量:7228 次
发布时间:2019-06-29

本文共 4007 字,大约阅读时间需要 13 分钟。

昨天晚上小伙伴突然来信, 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
> mData; public static final String KEY_NAME = "name"; // Context context, MyAdapter public MyAdapter(Context context, List
> 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

 

使用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
map1 = new HashMap<>(); map1.put(MyAdapter.KEY_NAME, "Hello World"); Map
map2 = new HashMap<>(); map2.put(MyAdapter.KEY_NAME, "Lu Xun"); Map
map3 = new HashMap<>(); map3.put(MyAdapter.KEY_NAME, "Zhu De"); Map
map4 = new HashMap<>(); map4.put(MyAdapter.KEY_NAME, "Lao Mao"); List
> 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 click11-06 06:56:59.869  12719-12719/? D/carlozlog﹕ TextView be long click11-06 06:57:02.115  12719-12719/? D/carlozlog﹕ TextView be long click11-06 06:57:04.845  12719-12719/? D/carlozlog﹕ TextView be long click11-06 06:57:06.596  12719-12719/? D/carlozlog﹕ TextView be long click11-06 06:57:08.755  12719-12719/? D/carlozlog﹕ TextView be long click11-06 06:57:10.189  12719-12719/? D/carlozlog﹕ TextView be long click

 

转载地址:http://ubdfm.baihongyu.com/

你可能感兴趣的文章
core_framework —— 基于libev的轻量级lua网络开发框架
查看>>
回到顶部
查看>>
DES/3DES(TripleDES)加密、解密测试数据
查看>>
Maven项目标准目录结构
查看>>
Tomcat 系统架构与设计模式,第 1 部分: 工作原理
查看>>
Hadoop输出参数信息详解(16)
查看>>
ERROR 2002 (HY000): Can't connect to local MySQL错误
查看>>
Java版冒泡排序法
查看>>
关于FB4.6插件安装后默认语言环境的更改问题
查看>>
免费分区助手
查看>>
Javascript通过Name调用Function
查看>>
统计当前在线用户数量
查看>>
IntelliJ IDEA 乱码解决方案 (项目代码、控制台等)
查看>>
PHP项目记录
查看>>
.net面试题系列文章七(附答案)
查看>>
FastSocket
查看>>
ionic $ionicSlideBoxDelegate 滑动框事件
查看>>
点击文字,把input type="radio"也选中
查看>>
第一章 Java多线程技能
查看>>
Java 集合系列-第八篇-Map架构
查看>>