1

我有一个在每一页上ViewPager使用的。ListFragments我分别实现onListItemClickonContextItemSelected处理列表项单击和长时钟。数据是通过互联网ListFragment加载的。AsyncTask

所需的行为是短按列表视图项以启动详细活动以显示该位置的详细信息(这是一个天气应用程序)。当用户长按时,会弹出一个上下文菜单,为用户提供其他选项,包括查看原始数据。

短按和细节活动效果很好。问题是长按,上下文菜单。当用户在第 3 页并使用长按选择列表中的第二个项目,然后为该位置选择“显示原始数据”时,将显示第 2 页上的第 2 个项目的原始数据,而不是第 3 页。

现在我正在使用 setOffscreenPageLimit(1)。当我将其更改为 setOffscreenPageLimit(2) 时,将显示第 1 页的数据而不是第 3 页。

代码:

@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {
    case R.id.cmenu_showRaw:    

        ViewGroup dataPanel = (ViewGroup) myListView.getChildAt(info.position);         
        TextView tvRaw = (TextView) dataPanel.findViewById(R.id.textRaw);
        TextView tvLocationID = (TextView) dataPanel.findViewById(R.id.textLocationId);

        showDismissDialog(tvRaw.getText().toString(), tvLocationID .getText().toString()); 
        return true;

我试图弄清楚为什么原始数据和 locationID 数据不是从 ViewPager 上当前显示的片段中提取,而是从偏移页面中提取。我还在学习片段,所以我可能遗漏了一些微妙的东西。

4

1 回答 1

2

我想通了:info.targetView让我得到我长期坚持的观点。从那里我可以做一个findViewById得到我需要的东西。

于 2012-05-25T09:44:35.650 回答