【问题标题】:Getting list row id in list view在列表视图中获取列表行 ID
【发布时间】:2012-05-01 07:25:42
【问题描述】:

如果我有一个使用 web 服务填充的列表视图,并且每行中添加的元素都有一个存储在数组列表中的唯一 id,该数组列表利用哈希图来存储数据,那么获取数据 id 的最简单方法是什么,那是在行中点击的.. 我正在使用列表中的基本适配器,

任何帮助将不胜感激。

【问题讨论】:

    标签: android listview arraylist


    【解决方案1】:

    在列表视图上设置项目单击侦听器。它将返回适配器中单击项目的位置(相当于数组列表中的位置)。您可以使用它来获取 id。

    【讨论】:

    • 是的,我知道很多,但我是编码新手,所以我不知道如何从数组列表中获取该职位的数据
    • arraylist.get(index); index 是您在单击时获得的“位置”arraylist 是您填充列表的 ArrayList
    • lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(),lv.getAdapter.getItem(position), Toast.LENGTH_SHORT).show(); } });
    • 好的,这给了我来自 arraylist 的位置,现在如果位置有“xyz”作为它的标题/元素,我如何在 toast 中显示它??
    • 您还将获得一个视图(例如 v)以及该位置。使用TextView tv = (TextView) v.findViewById(R.id.id_of_textview_in_your_layout); tv.getText(); //this will get you the title
    【解决方案2】:
    lv.setOnItemClickListener(new OnItemClickListener() {
    
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(),String.valueOf(position), Toast.LENGTH_SHORT).show();
            }
        });
    

    第三个参数是列表中Item的位置。

    【讨论】:

    • 我知道如何获得位置,但我不知道如何将其与我正在使用的数组列表中的位置进行比较
    • 你想做什么?您想将 Arraylist 的值与特定位置的 ListView 的值进行比较???
    • 是的,例如,如果它有一个唯一的 json id 分配给它,我希望它在我单击列表项时从 arraylist 中检索它
    • 因此检索项目位置并使用 arraylistobject.get(position) 从 arraylist 中获取 JSON Id。
    • 我用 mylist.get(position);要获得位置,现在它显示位置的 int 值,nw 如果 xyz 处于该位置,我如何在敬酒中显示?因为在 toast 中放置位置只显示 int 值
    【解决方案3】:

    使用此方法 listView.getItemAtPosition(position)。它有一个你可以使用的位置

    listView.setOnItemClickListener(new OnItemClickListener() {
    
        public void onItemClick(AdapterView<?> a, View v, int position, long id) {
            // Get item at position like this:
            // listView.getItemAtPosition(position));
        }
    });
    

    【讨论】:

      【解决方案4】:

      如果您使用adapter.getItem(position) 函数,您将能够在该特定位置获取存储在 ListView 中的项目。

      更新:这当然是在setOnItemClickListener

      【讨论】:

      • 我知道如何获得位置,但我不知道如何将其与我正在使用的数组列表中的位置进行比较
      • @AalokSharma,getItem 将为您提供列表中特定位置的项目。尝试查看 Krishnakant Dalal 的答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      相关资源
      最近更新 更多