我正在使用带有部分的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);
答案 0 :(得分:1)
将父AdapterView
作为参数传递给onItemClick()
,它有getAdapter()
。
答案 1 :(得分: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++;
}
}