Firemonkey ListView 点击事件

Firemonkey ListView 的点击事件一直让人摸不着头绪(各平台触发规则不太相同),因为它提供了点击相关的事件就有如下:

  • OnChange:改变项目触发。
  • OnClick:点击触发。
  • OnItemClick:点击项目触发
    • Windows 平台:按下立即触发,放开后接着触发 OnItemClickEx。
    • Android 平台:按下立即触发,不用放开接着 OnItemClickEx(按钮 Button 触发顺序与 Widnows 相同,要放开才会触发 OnItemClickEx)。
  • OnItemClickEx:项目内单项触发(以下以此为例,单纯只用此事件)

下例将 Item.Apperance 设定为 Custom。

可获取每一个单项的事件触发:

有一些问题存在:

  1. 其中按钮点击后,并不会更新 ItemIndex,所以采用变通方式,在按钮的 TagFloat 加入编号来识别。
  2. 点击 Accessory 后是触发 Text 而非 Accessory,这部份我有改动到源码,使它能正常辨别是点击到那一个(改动源码并不建议,有兴趣自行研究)。

参考代码:

procedure TForm1.ListView1ItemClickEx(const Sender: TObject; ItemIndex: Integer;
  const [Ref] LocalClickPos: TPointF; const ItemObject: TListItemDrawable);
begin
     if ItemObject is TListItemText       then Label1.Text := ‘OnItemClickEx_Text_‘      + ItemIndex.ToString else
     if ItemObject is TListItemImage      then Label1.Text := ‘OnItemClickEx_Image_‘     + ItemIndex.ToString else
     if ItemObject is TListItemAccessory  then Label1.Text := ‘OnItemClickEx_Accessory_‘ + ItemIndex.ToString else
     if ItemObject is TListItemTextButton then Label1.Text := ‘OnItemClickEx_Button_‘    + TListItemTextButton(ItemObject).TagFloat.ToString else
                                               Label1.Text := ‘OnItemClickEx‘            + ItemIndex.ToString;
end;
时间: 2024-11-14 05:30:08

Firemonkey ListView 点击事件的相关文章

android中listview点击事件失效的灵异事件

首先说明一下我想实现的功能: 点击某个item之后,让其颜色发生变化.如果变化网上有很多例子,我就不班门弄斧了.Listview之所以点击没有反应是因为上图中绿色部分(自己定义的一个继承BaseAdapter的adapter来适应listview)将listview的item覆盖了.现在点击的只是自定义的adapter中的convertView. 其次,自定义的adapter中包含一个ImageView和二个TextView.代码如下: <?xml version="1.0" e

ListView点击事件失效(item里面有button按钮控件)解决方法

ListView点击事件失效解决方法: 一般出现这个情况,就是你的item里面有按钮的点击事件,你的item里面有button控件,button控件是抢占焦点的,只要在你的item布局里面这样子写就可以了: <Button android:layout_width="140px" android:layout_height="56px" android:text="按钮" android:textSize="28px"

[转]android中listview点击事件失效

首先说明一下我想实现的功能: 点击某个item之后,让其颜色发生变化.如果变化网上有很多例子,我就不班门弄斧了.Listview之所以点击没有反应是因为上图中绿色部分(自己定义的一个继承BaseAdapter的adapter来适应listview)将listview的item覆盖了.现在点击的只是自定义的adapter中的convertView. 其次,自定义的adapter中包含一个ImageView和二个TextView.代码如下: <?xml version="1.0" e

ListView点击事件

// 绑定监听 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Fruit f = fruitList.get(position); Toast.makeText(MainActivity.this, id + &q

android中listview点击事件的监听实现

listview_bookmark.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { TextView bookmark_title=(TextView)view.findViewById(R.id.bookmark_title); L

自定义adapter的基础上Listview优化方案以及几个小错误(checkbox吃掉点击事件以及对象重复问题)

每次adapter运行都有一个getcount,有多少条就调用多少次getview,就会解析多少次xml文件(创建view,条数多了很消耗时间),13年谷歌提出了一个机制,每次只缓存一屏幕多几个,把划出屏幕外的listview回收(用的convertView),只要修改里面的值就可以重新用不用再创建一个view 修改的是自定义adapter中的getview方法 @Overridepublic View getView(int position, View convertView, ViewGr

androidannotations 简单复制与点击事件(1)

现在最火的android开发框架 简单描述一下 这一篇简单描述寻找控件以及事件的使用 1.该方法可以不用写setconteview @EActivity(R.layout.activity_main)public class MainActivity extends Activity { 2.寻找控件基本上三种方法 /**     * 赋值     * 1.通过ViewById 简单赋值 两种方法     * 2. 通过@ViewsById 来进行赋值     * 3.赋值 通过@AfterVi

Android学习之解决ListView中item点击事件和item中Button点击事件冲突问题

在ListView中添加Button后,如果只是单纯的加入而不加限制的话,ListView的onClick点击事件没有响应,因为Button获取了item的焦点,想要两者都可点击,需要加上如下限制: 在ListView的适配器中的布局文件中添加: (1)在布局文件的根元素上中添加属性android:descendantFocusability="blocksDescendants" (2)在Button中添加属性android:focusable="false"和a

Android学习---ListView的点击事件,simpleAdapter和arrayadapter的原理和使用 - Hi_Amos

如题,本文将介绍 listview的点击事件,simpleAdapter和arrayadapter的原理和使用. 1.ListView的注册点击事件 //注册点击事件 personListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { /** * * @param parent 当前ListView * @param view 代表当前被点击的条目 * @param position 当前条目的位置 * @p