0

我正在使用带有部分的 ListView。我有一个 ArrayAdapters 列表,每个部分一个。我需要在 onItemClick 上确定正确的适配器以在适配器中启动方法。如何获得对正确适配器的引用?

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
  long id)
{
  adapterList.get(x).toggleBought(position);
  //need to determine x (the x'th adapter in the list
  //or somehow get a reference to the adapter instead of adapterList.get(x)
}

这是创建适配器列表的代码:

adapterList = new ArrayList<CartRowAdapter>();  //list of ArrayAdapters
oListAdapter = new CartListAdapter(getActivity()); //BaseAdapter
for (int i = 0; i < cartLists.size(); i++)
{
  adapterList.add(new CartRowAdapter(getActivity(), R.layout.cart_row,
  cartLists.get(i)));
  oListAdapter.addSection(cartLists.get(i).get(0).getAisle(),
  adapterList.get(i));
}
listView.setAdapter(oListAdapter);
4

2 回答 2

1

我最终通过编写一个丑陋的黑客来解决这个问题。由于每个部分标题也计算在内,因此我通过关闭项目位置来获得另一个。同样对于适配器,每个适配器上的第一项是位置 0,所以我也在计算它。虽然这是一个丑陋的黑客,但至少它非常适合我正在做的事情。我是我要找的号码。

int i = 0;
int sizes = 0;
while (true)
{
  sizes += cartLists.get(i).size();
  position -= 1;
  if (position < sizes)
  {
    position -= sizes;
    position += cartLists.get(i).size();
    break;
  }
  else
  {
    i++;
  }
}
于 2013-08-15T06:55:01.707 回答
1

AdapterView级作为参数传入,onItemClick()并且具有getAdapter().

于 2013-08-14T10:40:04.440 回答