【问题标题】:How to get which element is clicked in customized list view item in android ?如何获取在android的自定义列表视图项中单击了哪个元素?
【发布时间】:2014-04-23 17:46:01
【问题描述】:

我在 ListView 中有一个自定义列表项,其中包含 2 个 Buttons(保存、共享)。

如何在onItemClick()方法中获取列表项中点击了哪个Button

喜欢:

      ListView
----------------------------
[Text]
[SAVE BUTTON1][SHARE BUTTON2]
-----------------------------
[Text]
[SAVE BUTTON1][SHARE BUTTON2]
-----------------------------
[Text]
[SAVE BUTTON1][SHARE BUTTON2]
-----------------------------
-
-

【问题讨论】:

    标签: android android-listview onitemclicklistener onitemclick


    【解决方案1】:

    您可以执行以下操作,

    ListViewgetView() 方法中将Tag 设置为Button

    btn.setTag(position);
    

    然后将OnClickListener 设置为您的按钮,

    btn.setOnClickListener(new View.OnClickListener() {
    
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "button position is: "+v.getTag(),
       Toast.LENGTH_LONG).show();
        }
    });
    

    【讨论】:

      【解决方案2】:

      对于自定义适配器,您应该使用 View.OnClickListener 并使用 setOnClickListener() 方法将其设置为每个单独的元素 Button

      onItemClick()OnItemClickListener 的一部分,它只响应点击整个视图。这通常用于使用默认适配器之一的更简单的列表。

      【讨论】:

      • 如果我使用 setOnClickListener(),如何在 Listener 函数中获取与列表项关联的数据。
      • Android 中的每个View 都有方法setTag(Object)getTag()。这些可用于存储您想要的任何对象。因此,假设您的适配器是ArrayAdapter<Book>,您可以将每本书存储在视图本身中。这样在onClick(View v) 期间你可以Book b = (Book) v.getTag();
      • 我正在使用 'SimpleCursorAdaptor' ,直接从 sqlite 获取数据并将其作为列表视图的适配器提供。如何设置对象,作为我们直接来自数据库的数据..
      • 方法还是一样的。例如,如果你需要一个ID来保存,你可以将带有ID的String放在标签中。如果您需要更多,您可以使用HashMap 来放置您需要的所有值,或者创建一个类来保存这些值。
      • 关注source
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2015-07-26
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多