【问题标题】:OnClickListener in Listview populated with a CursorAdapterListview 中的 OnClickListener 填充有 CursorAdapter
【发布时间】:2010-11-19 08:55:38
【问题描述】:

我有一个列表视图,每行有 2 个按钮。 我正在使用 cursoradpater 来填充列表。

我也在 newview() bindview() 上使用视图持有者模式。

我的问题是: 知道按钮的操作与列表项本身的操作不同,我应该将按钮的 clicklisteners 放在哪里? 我保留 onListItemClick 吗?

【问题讨论】:

    标签: android listactivity


    【解决方案1】:

    您不需要onListItemClick

    您可以尝试在适配器中为每个按钮绑定一个事件

    final Button button = (Button) findViewById(R.id.button_id);
             button.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
                     // Perform action on click
                 }
             });
    

    但这可能不适用于列表项,因此您需要一种新的方法,如button documentation 中所述。

    但是,您可以使用 android:onClick 属性为 XML 布局中的按钮分配一个方法,而不是对 Activity 中的按钮应用 OnClickListener。例如:

    <Button
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:text="@string/self_destruct"
         android:onClick="selfDestruct" />
    

    现在,当用户单击按钮时,Android 系统会调用 Activity 的 selfDestruct(View) 方法。为了使其工作,该方法必须是公共的并接受一个视图作为它的唯一参数。例如:

     public void selfDestruct(View view) {
         // Kabloey
     }
    

    传递给方法的 View 是对被点击的小部件的引用。

    【讨论】:

    • 但这不会给我点击项目的位置。我的意思是在哪一行点击了按钮。
    • 您可以在按钮上setTag() 设置您需要的组合ID。您将通过getTag() 从传递的视图参数中读取
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多