android - 使用自定义 ListView 的听众的个人 ID

标签 android android-listview onclicklistener

我是 Android SDK 的新手,最近开始开发一个小应用程序。该应用程序以菜单为中心,该菜单是使用自定义 ListView 实现的。我用了this guide as a reference in order to build my model classes and my adapter .作者还在 GitHub 上发布了他使用的代码,here .我的结果和原来的比较接近,下面的屏幕来自作者的博文:

enter image description here

我成功地设置了我的菜单,现在我需要将列表的每个项目连接到监听器以便我可以处理点击。为了简单起见,我让 Activity 实现了 OnClickListener:

public class MenuActivity extends ListActivity implements View.OnClickListener 
{
    @Override
    public void onClick(View v) {
        // ...
    }
}

我还能够通过菜单项的 XML 文件将我的菜单项连接到此方法:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:onClick="onClick"
    android:id="@+id/menu_item_layout">

现在,每当我单击列表项之一时,我都会进入 onClick 方法。然而,一旦我到了那里,我就无法找到一种方法来区分一个项目。如您所见,我将我的点击事件应用于他们的布局,以便在我点击其中的一个项目(我的文本)时触发它。

但是,由于我所有的项目共享相同的 XML 布局,它们似乎也共享相同的 ID:@id/menu_item_layout。因此,我不能像往常一样...

public void onClick(View v) {
    switch(v.getId()){
        case R.id.myId: /* ... */ break;
        case R.id.myId2: /* ... */ break;
        // ...
    }
}

鉴于此“自定义列表”实现,有没有一种方法可以区分对菜单项 1 的点击和对菜单项 2 的点击?

最佳答案

OnClickListener 不会像您期望的那样使用 ListView。但是,ListActivity类提供了onListItemClick()方法,实现如下:

@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{

}

position 参数将保存与点击的项目对应的基础数据列表中的索引。

关于android - 使用自定义 ListView 的听众的个人 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27385322/

相关文章:

java - 如何在android中使用retrofit将图像对象发送到服务器

android - 同步项目时无法解析 : com. google.android.gms :play-services:9. 6.0

android - 有没有办法以编程方式在 Android 设备上执行出厂重置?

android - 具有两列的 ListView,具有单独的 onItemClick - Android

css - 允许在 Bootstrap 表中选择文本

Android - 获取对 SD 卡上任何文件路径具有写入权限的 DocumentFile(已获得 SD 卡权限)

android 设置 ListView 位置不起作用

java - OnClickListener 不适用于谷歌地图 fragment 顶部的按钮

android - 在 Android App 中打开 PDF