Android 列表视图中的 OnItemClickListener 与 OnclickListener

2023-12-12

由于代码的原因,这会很长。所以我有一个关于 OnItemclickListener 与 OnclickListener 的问题,这里我有两个代码,每个代码都有效,所以是否有优先使用这两个代码之一或者我可以使用任何人??? 这是 OnItemClickListener 的代码

public class MainActivity extends AppCompatActivity {
    private ArrayList<String> numbers=new ArrayList<String>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //a listview with id "list"

        ListView numberLV = (ListView) findViewById(R.id.list);
        numbers.add("one");
        numbers.add("two");
        numbers.add("three");
        numbers.add("four");
        // and so on
        listAdapter itemadapter=new listAdapter(this,numbers);
        numberLV.setAdapter(itemadapter);
        numberLV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String num=numbers.get(position);
                String display="You have clicked "+num;
                Toast.makeText(MainActivity.this,display,Toast.LENGTH_SHORT).show();
            }
        });
    }
}
class listAdapter extends ArrayAdapter<String> {
    public listAdapter(@NonNull Context context, ArrayList<String> numbers){
        super(context,0,numbers);
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View listItemView = convertView;
        if(listItemView == null) {
            listItemView = LayoutInflater.from(getContext()).inflate(
                    R.layout.list_num, parent, false);
        }
        TextView tvnum=(TextView) listItemView.findViewById(R.id.numbersTV);
        String num=getItem(position);
        tvnum.setText(num);
        return listItemView;
    }
}

这是一个带有 OnClickListener 的

public class MainActivity extends AppCompatActivity {
    private ArrayList<String> numbers=new ArrayList<String>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //a listview with id "list"

        ListView numberLV = (ListView) findViewById(R.id.list);
        numbers.add("one");
        numbers.add("two");
        numbers.add("three");
        numbers.add("four");
        // and so on
        listAdapter itemadapter=new listAdapter(this,numbers);
        numberLV.setAdapter(itemadapter);
    }
}
class listAdapter extends ArrayAdapter<String> {
    public listAdapter(@NonNull Context context, ArrayList<String> numbers){
        super(context,0,numbers);
    }

    @NonNull
    @Override
    public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View listItemView = convertView;
        if(listItemView == null) {
            listItemView = LayoutInflater.from(getContext()).inflate(
                    R.layout.list_num, parent, false);
        }
        TextView tvnum=(TextView) listItemView.findViewById(R.id.numbersTV);
        String num=getItem(position);
        tvnum.setText(num);
        listItemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String display="You have clicked "+getItem(position);
                Toast.makeText(getContext(),display,Toast.LENGTH_SHORT).show();
            }
        });
        return listItemView;
    }
}

两个代码对我来说都正常工作,但令人困惑的是第二个代码是对还是错?


我认为 setOnItemClickListener() 比 onClickListener() 最好,因为,

  1. 它使您可以在定义 ListView 的活动或片段中单击一行。
  2. 当您想对 onItemClickListener() 执行操作(例如打开另一个 Activity 或 Fragment)时,会更容易。
  3. 我们可以在项目单击方法中使用 view.getTag() 方法获取选定行的 List 对象。
  4. 当您有来自 Web api 的调用数据(例如肥皂或列表视图项目上的 Restful 单击)时,这是实现它的简单方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 列表视图中的 OnItemClickListener 与 OnclickListener 的相关文章

  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • 如何在android中获取Camera2 API的当前曝光

    In android hardware Camera旧的 我使用下面的代码获取当前曝光并获取它Camera Camera Parameters param mCamera getParameters currentExposure para
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript

随机推荐

  • 部署时出现 VB.NET 3.5 SocketException,但开发机器上未出现

    我编写了一个异步 UDP 客户端来与我公司的服务器通信 当我在我的开发机器上运行时一切都很好 当我部署到另一台机器时 第一次通过套接字发送数据时 我在 EndReceive 上遇到套接字异常 我的开发盒是 Win7 我已经部署到 XP SP
  • 我正在尝试在 html5 Windows 7 中进行简单的音频测试 它适用于 Firefox 和 Chrome 但不适用于 IE11 有人可以帮我吗 这是我的简单 HTML 文件
  • number_in_month 练习(SML 列表迭代)

    我需要获取日期列表和月份列表 并获取列出的任何月份中的日期数量总数 从而返回一个整数 我有一个先前定义的number in month函数 它接受一个列表 日期和一个月 并返回该日期中的日期数量 月 它已经过测试并且工作正常 我以此为基础
  • 如何连接非空、断开连接的节点?

    当我尝试使用以下命令构建一系列断开连接的 DOM 节点时 after 如果它们为空 则效果很好 14 56 45 186 span span after p p 14 56 45 193 0 length 2 prevObject 0 le
  • 基于祖先类的LessCss动态变量

    我有一个页面模板 其中有一个品牌类body元素 h1 Africa h1 使用以下 Less 我可以使用品牌颜色变量并将其应用于colorCSS 选择器的 brand default 649d84 brand africa df6f20 b
  • Google chrome a:访问过的背景图像不起作用

    在开始之前我应该 说是的 我已经完成了所有的愚蠢检查 是的 该链接在我的历史记录中并且已被访问过等 我使用的是 Chrome 版本 6 0 472 63 尽管它适用于所有浏览器很重要 它适用于 Firefox IE 和 Opera 基本上我
  • 为什么要回显反引号行?

    我 继承 了项目中的一些代码 并且在其中一个 Bash 脚本中 他们使用echo在反引号行上 例如 bin bash echo path command argument 这和只运行命令本身有什么区别 bin bash path comma
  • 为什么 Opera 9 在这两个图像之间有一个空格?

    其他所有浏览器都能正确呈现此内容 div div img src img logo top png width 168 height 85 alt Logo top div div img src img logo bottom png w
  • 如何仅更改 ttk.Entry 的一侧边框宽度?

    我正在尝试使用 tkinter 网格和 ttk 条目显示数独布局 也许 我没有使用正确的方法来实现它 我想知道 ttk 条目的样式选项是否有任何方法可以更改一侧的边框 我已经应用了这个功能 def grid layout parent s
  • 如何更改 Asp.net Identity 3.0 中的表名称?

    如何更改 ASP net Identity 3 0 中的表名称 我已经搜索过 但没有找到任何有关 Identity 3 0 的可行文章 和这个如何更改 asp net Identity 3 vnext 使用的表名称 不管用 您可以通过使用扩
  • 向表中插入数据时出现问题

    sqlite3 数据库 sqlite3 stmt 语句 NSString dPath NSBundle mainBundle resourcesPath stringByAppendingPathComponent UserData sql
  • 如何检测 Excel 是否通过自动化启动(VSTO Addin 上下文)

    Context 我正在运行 VSTO Excel 应用程序上下文插件 当 MS Excel 由其他进程启动以在可见模式下实现自动化时 我也会加载我的插件 所以现在 有必要知道 MS Excel 是否是由其他自动化进程启动的 例如 创建对象
  • 使用 Google Analytics 跟踪 AJAX 请求

    我正在更改网站的很大一部分以使用 jQuery Address 的深度链接 AJAX 功能 我正在使用像这样的 URImysite com page1 subpage 等等 我读过很多关于使用以下方式跟踪流量的内容 gaq push 功能
  • 如何在 JBoss 应用程序服务器中创建数据源 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 任何人都可以提供在 JBoss 服务器 5 0 中使用 Oracle 数据库创建数据源的
  • 如何自动显示类的所有属性及其在字符串中的值? [复制]

    这个问题在这里已经有答案了 想象一个具有许多公共属性的类 由于某种原因 不可能将此类重构为更小的子类 我想添加一个 ToString 覆盖 它返回以下内容 Property 1 Value of property 1 n Property
  • java外部类编译会影响内部类吗

    我需要给 websphere 打一个补丁 我有一个主要的java类 它有三个内部类 我对主类的代码更改很少 但对任何内部类没有更改 现在我的问题是我是否需要将所有内部类以及主类文件作为补丁的一部分或单独提供主类就足够了 这不是一个权威的答案
  • JavaScript Array.length 返回 0

    I have javascript Array that looks like 问题是Object mappings有 3 个元素清楚地打印在控制台中console log 但是当我尝试查找它返回的数组长度时0 我尝试对数组进行字符串化 它
  • 在 Excel 函数中将十六进制字符串转换为 base64

    我有一长串十六进制值要转换为 base64 我正在寻找一个简单的格式单元格函数 例如 Hex2b64 Hexstring 它将接受任意长度的十六进制字符 我一直在使用http home paulschou net tools xlate 手
  • 并行触发异步请求,但使用 rxjs 按顺序获取结果

    例如 使用 jquery ajax 并行获取 5 个页面 当第 2 页返回时 不执行任何操作 当 page1 返回时 对 page1 和 page2 执行一些操作 assume there is some operator that can
  • Android 列表视图中的 OnItemClickListener 与 OnclickListener

    由于代码的原因 这会很长 所以我有一个关于 OnItemclickListener 与 OnclickListener 的问题 这里我有两个代码 每个代码都有效 所以是否有优先使用这两个代码之一或者我可以使用任何人 这是 OnItemCli