【问题标题】:How to get clicked item position from Custom ListView in android?如何从android中的自定义ListView中获取点击的项目位置?
【发布时间】:2011-11-04 04:07:35
【问题描述】:

我正在尝试获取自定义列表视图的位置(从原始列表位置排序后)。这是因为列表项的数据库 id 与列表视图项的位置相匹配。所以,我需要得到与列表视图项目位置匹配的排序项目的正确位置。我有这个代码。

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return sampleArrayList.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

但是我很清楚,我需要将该职位纳入我的主要活动。任何帮助都非常感谢,并提前感谢...

【问题讨论】:

  • 你是指被点击的item的位置吗?
  • 能否提供更多详细信息和代码。在列表视图中单击项目时是否需要获取位置?
  • 是的。我需要点击项目的位置,但排序后位置发生了变化。
  • 你想要哪个职位?排序后在数据库中的行位置或列表视图中的行位置?
  • 是的。排序后我需要列表项的行位置。我使用将列表视图项的行位置与数据库位置进行匹配。

标签: java android listview


【解决方案1】:

我怀疑,我完全理解您的问题以及您想要什么。但我可以建议您维护 HashMap 以存储每个列表视图的位置 ID 对。

在您的 CustomAdapter 中:

public static HashMap<Integer,String> myList=new HashMap<Integer,String>();

在 getView() 中:

String id= (fetch _id from database);
myList.put(position, id);

现在在您的主要活动中,您可以通过将此行放入 OnItemClickListener() 的 onClick() 中来检索每个列表项的 _id:

 Long id=Long.parseLong(CustomAdapter.myList.get(position));

【讨论】:

  • 为什么要在getview中获取数据库id?我们可以在主要活动本身中得到它吗?有什么特殊用途吗?
  • 这会将您的列表项的位置与附加到该项目的数据库的 _id 绑定。因此,您可以在收听项目点击时轻松处理该记录。
  • 这会让你得到一个被点击的列表项的正确_id,在任何位置,列表项是......试试这个。
【解决方案2】:

您可以在自定义适配器 mCurrentPosition 中定义一个字段,将其设置为方法

View getView(final int position, View convertView, ViewGroup parent) {<
this.mCurrentPosition = position;
....
}

从活动中访问此字段。

【讨论】:

  • 我照你说的做了。它仅显示列表视图的最后一个位置。我点击的最后一个位置被选中。
猜你喜欢
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
相关资源
最近更新 更多