使用上下文菜单在ViewPager中使用Android ListFragment

时间:2012-05-24 16:46:00

标签: android android-viewpager android-listfragment

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

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

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

现在我正在使用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;

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

1 个答案:

答案 0 :(得分:2)

我弄明白了:info.targetView让我了解了我所表达的观点。从那里我可以做findViewById来获得我需要的东西。