gpt4 book ai didi

Android - SeparatedListAdapter - 如何在 onClick 上获得准确的项目位置?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:10:26 24 4
gpt4 key购买 nike

我正在使用 Sharkey 的 SeparatedListAdapter 类,以便拥有一个按部分分隔的 ListView。

类(class)效果很好,但我遇到的问题是我的 onListItemClick()处理程序。如果我有以下分区列表:

---------
| A |
---------
| Alex |
| Allan |
---------
| B |
---------
| Barry |
| Bart |
| Billy |
| Brian |
---------
| C |
---------
etc...

当你想点击列表中的一个项目时,你会得到 position项目,然后用它做一些事情。

在我的例子中,我的列表是人名的动态列表。这些名称来自一个数据库,该数据库被放入 List<CustomClass> 中。在进入列表之前。知道我点击的项目的位置对我来说很重要,因为我使用项目 position以确定有关 List 对象中的人的其他信息。

现在的问题是:当您单击列表中的项目时,标题将被视为项目,即使它们是不可单击的。在上面的例子中,列表中的位置如下

Alex = 1
Allan = 2
Barry = 4
Bart = 5
Billy = 6
Brian = 7

但在我原来的List对象顺序是这样的

Alex = 0
Allan = 1
Barry = 2
Bart = 3
Billy = 4
Brian = 5

所以每当我点击一个项目,比如 Alex,我的代码就会运行 onClick处理程序,确定 Alex 在位置 1然后从 List 中检索 Allans 信息而不是 Alex 的。

你看到这里的 delima 了吗?我应该采取什么方法来解决这个问题?

最佳答案

您可以对 listView 中的每个项目使用 setTag()。这可以通过在从 listAdapter 中的 getView() 函数返回 View 之前添加此标记来完成。假设您的列表适配器返回 convertView ,然后在列表适配器中。

    public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null)
{
convertView = mLayoutInflater.inflate(R.layout.morestores_list_item, null);
holder = new ViewHolder();

convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// populate holder here, that is what you get in onItemClick.
holder.mNameofItem = "NameofaPerson";
return convertView;
}

static class ViewHolder {
TextView mName;
Button mAction;
ImageView mLogo;
// use this class to store the data you need, and use appropriate data types.
String mNameofItem.
}

当你点击列表项时,使用

public void onItemClick(AdapterView<?> arg0, View convertView, int arg2,
long arg3) {
ViewHolder holder = (ViewHolder) convertView.getTag();
// holder has what ever information you have passed.
String nameofItemClicked = holder.mNameofItem;
// access the information like this.
}

这种方法不需要项目在列表中的位置,只是想让你知道不同的方法。

HTH.

关于Android - SeparatedListAdapter - 如何在 onClick 上获得准确的项目位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7522454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com